<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ko">
	<id>http://samediff.kr/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Admin</id>
	<title>ph - 사용자 기여 [ko]</title>
	<link rel="self" type="application/atom+xml" href="http://samediff.kr/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Admin"/>
	<link rel="alternate" type="text/html" href="http://samediff.kr/wiki/index.php/%ED%8A%B9%EC%88%98:%EA%B8%B0%EC%97%AC/Admin"/>
	<updated>2026-04-24T16:44:12Z</updated>
	<subtitle>사용자 기여</subtitle>
	<generator>MediaWiki 1.34.0</generator>
	<entry>
		<id>http://samediff.kr/wiki/index.php?title=0315_%ED%83%80%EC%98%A4_%EC%98%9B%EB%82%A0%EC%B1%85_2%ED%8C%90_%EC%84%9C%EB%AC%B8&amp;diff=16231</id>
		<title>0315 타오 옛날책 2판 서문</title>
		<link rel="alternate" type="text/html" href="http://samediff.kr/wiki/index.php?title=0315_%ED%83%80%EC%98%A4_%EC%98%9B%EB%82%A0%EC%B1%85_2%ED%8C%90_%EC%84%9C%EB%AC%B8&amp;diff=16231"/>
		<updated>2025-03-15T14:12:34Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;https://a.co/d/99D9oUZ&lt;br /&gt;
Solving Mathematical Problems: A Personal Perspective 1st Edition&lt;br /&gt;
by Terence Tao &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
이 책을 처음 썼던 15년 전은 내 인생의 절반 전이다. 그동안 나는 고향을 떠나 다른 나라로 이주했고, 대학원을 마치고 강의를 하며 연구 논문을 쓰고, 대학원생들을 지도하고, 결혼하여 아이도 얻었다. 이제 내 삶과 수학을 바라보는 시각은 15살 때와는 분명히 다르다. 수학 경시대회 문제 풀이에서 손을 뗀 지도 오래되었으며, 만약 지금 같은 주제로 책을 쓴다면 지금 읽고 있는 책과는 매우 다른 모습일 것이다.&lt;br /&gt;
&lt;br /&gt;
수학은 다양한 면을 가진 학문이며, 이에 대한 경험과 이해는 시간이 흐르며 변화한다. 초등학생 시절 나는 형식적 조작의 추상적 아름다움과, 간단한 규칙들을 반복적으로 사용하여 놀라운 결과를 얻을 수 있다는 사실에 매료되었다. 고등학생 시절에는 수학 경시대회에 참가하며, 수학을 스포츠처럼 즐겼다. 이 책에 소개된 것과 같은 영리하게 고안된 수학 퍼즐을 풀기 위한 '묘수'를 찾는 데 재미를 느꼈다. 대학 학부 시절에는 현대 수학의 중심에 자리 잡고 있는 깊고 매혹적인 이론과 구조를 처음 접하며 경탄했다. 대학원 시절에는 자신만의 연구 주제를 가진 데 대한 자부심을 느꼈고, 미해결 문제를 풀어내는 독창적인 증명을 만들 때의 특별한 만족감을 알게 되었다. 전문적인 연구 수학자로서의 경력을 시작하면서는 현대 수학의 이론과 문제를 관통하는 직관과 동기를 보기 시작했고, 매우 복잡하고 깊이 있는 결과들조차도 본질적으로는 단순하고 상식적인 원리에 의해 인도될 수 있다는 사실을 깨달으며 큰 기쁨을 느꼈다. 이런 원리를 깨달아 넓은 수학적 영역을 환하게 밝혀주는 순간의 '아하!' 경험은 정말 특별한 것이다. 앞으로 발견할 수학의 면모들은 더욱 많으며, 최근에야 나는 다양한 수학 분야들을 충분히 이해하여 현대 수학이 어떻게 통일된 학문으로서 다른 과학 및 분야들과 연결되는지를 조금씩 깨닫고 있다.&lt;br /&gt;
&lt;br /&gt;
이 책은 내가 전문 수학자로서의 경력을 시작하기 전에 쓴 것으로, 지금과 같은 통찰력이나 경험이 부족했기에 일부 설명은 순진하거나 순수하게 느껴질 수도 있다. 그러나 당시의 나는 지금보다 고등학교 문제 풀이의 세계에 더 민감했기 때문에 이를 크게 수정하지 않기로 했다. 다만 텍스트를 LaTeX로 재정리하고, 내용을 좀 더 논리적으로 구성하며, 부정확하거나 혼란스러운 부분을 수정하고 몇 가지 연습문제를 추가했다. 일부 내용은 이제 구식이 되었다(예를 들어 페르마의 마지막 정리는 이제 엄밀히 증명되었다). 몇몇 문제는 더 발전된 수학 도구를 사용하면 보다 빠르고 깔끔하게 풀 수 있음을 이제 알지만, 이 책의 목적은 문제를 가장 세련되게 푸는 것이 아니라, 수학적 문제에 처음 접근할 때 여러 아이디어를 시도하고 일부를 제거하면서 체계적으로 문제를 다루는 과정이 어떻게 만족스러운 해답으로 이어질 수 있는지 보여주는 것이다.&lt;br /&gt;
&lt;br /&gt;
이 책의 재출판을 격려하고 지원해준 토니 가디너(Tony Gardiner)에게 깊은 감사를 표하며, 오랜 세월 동안 변함없이 지지해준 부모님께도 감사드린다. 또한 초판을 읽고 만난 모든 친구들과 지인들에게도 감사를 전한다. 끝으로, 15년 전에 사용하던 오래된 매킨토시 플러스 컴퓨터에서 이 책의 전자 사본을 복구해준 부모님과 플린더스 메디컬 센터의 컴퓨터 지원 부서에도 특별한 감사를 표한다.&lt;br /&gt;
&lt;br /&gt;
테렌스 타오&amp;lt;br&amp;gt;&lt;br /&gt;
캘리포니아 대학교 로스앤젤레스 캠퍼스(UCLA) 수학과&amp;lt;br&amp;gt;&lt;br /&gt;
2005년 12월&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
		
	</entry>
	<entry>
		<id>http://samediff.kr/wiki/index.php?title=0315_%ED%83%80%EC%98%A4_%EC%98%9B%EB%82%A0%EC%B1%85_2%ED%8C%90_%EC%84%9C%EB%AC%B8&amp;diff=16230</id>
		<title>0315 타오 옛날책 2판 서문</title>
		<link rel="alternate" type="text/html" href="http://samediff.kr/wiki/index.php?title=0315_%ED%83%80%EC%98%A4_%EC%98%9B%EB%82%A0%EC%B1%85_2%ED%8C%90_%EC%84%9C%EB%AC%B8&amp;diff=16230"/>
		<updated>2025-03-15T14:12:01Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;https://a.co/d/99D9oUZ&lt;br /&gt;
Solving Mathematical Problems: A Personal Perspective 1st Edition&lt;br /&gt;
by Terence Tao &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
이 책을 처음 썼던 15년 전은 내 인생의 절반 전이다. 그동안 나는 고향을 떠나 다른 나라로 이주했고, 대학원을 마치고 강의를 하며 연구 논문을 쓰고, 대학원생들을 지도하고, 결혼하여 아이도 얻었다. 이제 내 삶과 수학을 바라보는 시각은 15살 때와는 분명히 다르다. 수학 경시대회 문제 풀이에서 손을 뗀 지도 오래되었으며, 만약 지금 같은 주제로 책을 쓴다면 지금 읽고 있는 책과는 매우 다른 모습일 것이다.&lt;br /&gt;
&lt;br /&gt;
수학은 다양한 면을 가진 학문이며, 이에 대한 경험과 이해는 시간이 흐르며 변화한다. 초등학생 시절 나는 형식적 조작의 추상적 아름다움과, 간단한 규칙들을 반복적으로 사용하여 놀라운 결과를 얻을 수 있다는 사실에 매료되었다. 고등학생 시절에는 수학 경시대회에 참가하며, 수학을 스포츠처럼 즐겼다. 이 책에 소개된 것과 같은 영리하게 고안된 수학 퍼즐을 풀기 위한 '묘수'를 찾는 데 재미를 느꼈다. 대학 학부 시절에는 현대 수학의 중심에 자리 잡고 있는 깊고 매혹적인 이론과 구조를 처음 접하며 경탄했다. 대학원 시절에는 자신만의 연구 주제를 가진 데 대한 자부심을 느꼈고, 미해결 문제를 풀어내는 독창적인 증명을 만들 때의 특별한 만족감을 알게 되었다. 전문적인 연구 수학자로서의 경력을 시작하면서는 현대 수학의 이론과 문제를 관통하는 직관과 동기를 보기 시작했고, 매우 복잡하고 깊이 있는 결과들조차도 본질적으로는 단순하고 상식적인 원리에 의해 인도될 수 있다는 사실을 깨달으며 큰 기쁨을 느꼈다. 이런 원리를 깨달아 넓은 수학적 영역을 환하게 밝혀주는 순간의 '아하!' 경험은 정말 특별한 것이다. 앞으로 발견할 수학의 면모들은 더욱 많으며, 최근에야 나는 다양한 수학 분야들을 충분히 이해하여 현대 수학이 어떻게 통일된 학문으로서 다른 과학 및 분야들과 연결되는지를 조금씩 깨닫고 있다.&lt;br /&gt;
&lt;br /&gt;
이 책은 내가 전문 수학자로서의 경력을 시작하기 전에 쓴 것으로, 지금과 같은 통찰력이나 경험이 부족했기에 일부 설명은 순진하거나 순수하게 느껴질 수도 있다. 그러나 당시의 나는 지금보다 고등학교 문제 풀이의 세계에 더 민감했기 때문에 이를 크게 수정하지 않기로 했다. 다만 텍스트를 LaTeX로 재정리하고, 내용을 좀 더 논리적으로 구성하며, 부정확하거나 혼란스러운 부분을 수정하고 몇 가지 연습문제를 추가했다. 일부 내용은 이제 구식이 되었다(예를 들어 페르마의 마지막 정리는 이제 엄밀히 증명되었다). 몇몇 문제는 더 발전된 수학 도구를 사용하면 보다 빠르고 깔끔하게 풀 수 있음을 이제 알지만, 이 책의 목적은 문제를 가장 세련되게 푸는 것이 아니라, 수학적 문제에 처음 접근할 때 여러 아이디어를 시도하고 일부를 제거하면서 체계적으로 문제를 다루는 과정이 어떻게 만족스러운 해답으로 이어질 수 있는지 보여주는 것이다.&lt;br /&gt;
&lt;br /&gt;
이 책의 재출판을 격려하고 지원해준 토니 가디너(Tony Gardiner)에게 깊은 감사를 표하며, 오랜 세월 동안 변함없이 지지해준 부모님께도 감사드린다. 또한 초판을 읽고 만난 모든 친구들과 지인들에게도 감사를 전한다. 끝으로, 15년 전에 사용하던 오래된 매킨토시 플러스 컴퓨터에서 이 책의 전자 사본을 복구해준 부모님과 플린더스 메디컬 센터의 컴퓨터 지원 부서에도 특별한 감사를 표한다.&lt;br /&gt;
&lt;br /&gt;
테렌스 타오&lt;br /&gt;
캘리포니아 대학교 로스앤젤레스 캠퍼스(UCLA) 수학과&lt;br /&gt;
2005년 12월&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
		
	</entry>
	<entry>
		<id>http://samediff.kr/wiki/index.php?title=0315_%ED%83%80%EC%98%A4_%EC%98%9B%EB%82%A0%EC%B1%85_2%ED%8C%90_%EC%84%9C%EB%AC%B8&amp;diff=16229</id>
		<title>0315 타오 옛날책 2판 서문</title>
		<link rel="alternate" type="text/html" href="http://samediff.kr/wiki/index.php?title=0315_%ED%83%80%EC%98%A4_%EC%98%9B%EB%82%A0%EC%B1%85_2%ED%8C%90_%EC%84%9C%EB%AC%B8&amp;diff=16229"/>
		<updated>2025-03-15T14:11:56Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;https://a.co/d/99D9oUZ&lt;br /&gt;
Solving Mathematical Problems: A Personal Perspective 1st Edition&lt;br /&gt;
by Terence Tao &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 이 책을 처음 썼던 15년 전은 내 인생의 절반 전이다. 그동안 나는 고향을 떠나 다른 나라로 이주했고, 대학원을 마치고 강의를 하며 연구 논문을 쓰고, 대학원생들을 지도하고, 결혼하여 아이도 얻었다. 이제 내 삶과 수학을 바라보는 시각은 15살 때와는 분명히 다르다. 수학 경시대회 문제 풀이에서 손을 뗀 지도 오래되었으며, 만약 지금 같은 주제로 책을 쓴다면 지금 읽고 있는 책과는 매우 다른 모습일 것이다.&lt;br /&gt;
&lt;br /&gt;
수학은 다양한 면을 가진 학문이며, 이에 대한 경험과 이해는 시간이 흐르며 변화한다. 초등학생 시절 나는 형식적 조작의 추상적 아름다움과, 간단한 규칙들을 반복적으로 사용하여 놀라운 결과를 얻을 수 있다는 사실에 매료되었다. 고등학생 시절에는 수학 경시대회에 참가하며, 수학을 스포츠처럼 즐겼다. 이 책에 소개된 것과 같은 영리하게 고안된 수학 퍼즐을 풀기 위한 '묘수'를 찾는 데 재미를 느꼈다. 대학 학부 시절에는 현대 수학의 중심에 자리 잡고 있는 깊고 매혹적인 이론과 구조를 처음 접하며 경탄했다. 대학원 시절에는 자신만의 연구 주제를 가진 데 대한 자부심을 느꼈고, 미해결 문제를 풀어내는 독창적인 증명을 만들 때의 특별한 만족감을 알게 되었다. 전문적인 연구 수학자로서의 경력을 시작하면서는 현대 수학의 이론과 문제를 관통하는 직관과 동기를 보기 시작했고, 매우 복잡하고 깊이 있는 결과들조차도 본질적으로는 단순하고 상식적인 원리에 의해 인도될 수 있다는 사실을 깨달으며 큰 기쁨을 느꼈다. 이런 원리를 깨달아 넓은 수학적 영역을 환하게 밝혀주는 순간의 '아하!' 경험은 정말 특별한 것이다. 앞으로 발견할 수학의 면모들은 더욱 많으며, 최근에야 나는 다양한 수학 분야들을 충분히 이해하여 현대 수학이 어떻게 통일된 학문으로서 다른 과학 및 분야들과 연결되는지를 조금씩 깨닫고 있다.&lt;br /&gt;
&lt;br /&gt;
이 책은 내가 전문 수학자로서의 경력을 시작하기 전에 쓴 것으로, 지금과 같은 통찰력이나 경험이 부족했기에 일부 설명은 순진하거나 순수하게 느껴질 수도 있다. 그러나 당시의 나는 지금보다 고등학교 문제 풀이의 세계에 더 민감했기 때문에 이를 크게 수정하지 않기로 했다. 다만 텍스트를 LaTeX로 재정리하고, 내용을 좀 더 논리적으로 구성하며, 부정확하거나 혼란스러운 부분을 수정하고 몇 가지 연습문제를 추가했다. 일부 내용은 이제 구식이 되었다(예를 들어 페르마의 마지막 정리는 이제 엄밀히 증명되었다). 몇몇 문제는 더 발전된 수학 도구를 사용하면 보다 빠르고 깔끔하게 풀 수 있음을 이제 알지만, 이 책의 목적은 문제를 가장 세련되게 푸는 것이 아니라, 수학적 문제에 처음 접근할 때 여러 아이디어를 시도하고 일부를 제거하면서 체계적으로 문제를 다루는 과정이 어떻게 만족스러운 해답으로 이어질 수 있는지 보여주는 것이다.&lt;br /&gt;
&lt;br /&gt;
이 책의 재출판을 격려하고 지원해준 토니 가디너(Tony Gardiner)에게 깊은 감사를 표하며, 오랜 세월 동안 변함없이 지지해준 부모님께도 감사드린다. 또한 초판을 읽고 만난 모든 친구들과 지인들에게도 감사를 전한다. 끝으로, 15년 전에 사용하던 오래된 매킨토시 플러스 컴퓨터에서 이 책의 전자 사본을 복구해준 부모님과 플린더스 메디컬 센터의 컴퓨터 지원 부서에도 특별한 감사를 표한다.&lt;br /&gt;
&lt;br /&gt;
테렌스 타오&lt;br /&gt;
캘리포니아 대학교 로스앤젤레스 캠퍼스(UCLA) 수학과&lt;br /&gt;
2005년 12월&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
		
	</entry>
	<entry>
		<id>http://samediff.kr/wiki/index.php?title=0315_%ED%83%80%EC%98%A4_%EC%98%9B%EB%82%A0%EC%B1%85_2%ED%8C%90_%EC%84%9C%EB%AC%B8&amp;diff=16228</id>
		<title>0315 타오 옛날책 2판 서문</title>
		<link rel="alternate" type="text/html" href="http://samediff.kr/wiki/index.php?title=0315_%ED%83%80%EC%98%A4_%EC%98%9B%EB%82%A0%EC%B1%85_2%ED%8C%90_%EC%84%9C%EB%AC%B8&amp;diff=16228"/>
		<updated>2025-03-15T14:11:49Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;https://a.co/d/99D9oUZ&lt;br /&gt;
Solving Mathematical Problems: A Personal Perspective 1st Edition&lt;br /&gt;
by Terence Tao &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  이 책을 처음 썼던 15년 전은 내 인생의 절반 전이다. 그동안 나는 고향을 떠나 다른 나라로 이주했고, 대학원을 마치고 강의를 하며 연구 논문을 쓰고, 대학원생들을 지도하고, 결혼하여 아이도 얻었다. 이제 내 삶과 수학을 바라보는 시각은 15살 때와는 분명히 다르다. 수학 경시대회 문제 풀이에서 손을 뗀 지도 오래되었으며, 만약 지금 같은 주제로 책을 쓴다면 지금 읽고 있는 책과는 매우 다른 모습일 것이다.&lt;br /&gt;
&lt;br /&gt;
수학은 다양한 면을 가진 학문이며, 이에 대한 경험과 이해는 시간이 흐르며 변화한다. 초등학생 시절 나는 형식적 조작의 추상적 아름다움과, 간단한 규칙들을 반복적으로 사용하여 놀라운 결과를 얻을 수 있다는 사실에 매료되었다. 고등학생 시절에는 수학 경시대회에 참가하며, 수학을 스포츠처럼 즐겼다. 이 책에 소개된 것과 같은 영리하게 고안된 수학 퍼즐을 풀기 위한 '묘수'를 찾는 데 재미를 느꼈다. 대학 학부 시절에는 현대 수학의 중심에 자리 잡고 있는 깊고 매혹적인 이론과 구조를 처음 접하며 경탄했다. 대학원 시절에는 자신만의 연구 주제를 가진 데 대한 자부심을 느꼈고, 미해결 문제를 풀어내는 독창적인 증명을 만들 때의 특별한 만족감을 알게 되었다. 전문적인 연구 수학자로서의 경력을 시작하면서는 현대 수학의 이론과 문제를 관통하는 직관과 동기를 보기 시작했고, 매우 복잡하고 깊이 있는 결과들조차도 본질적으로는 단순하고 상식적인 원리에 의해 인도될 수 있다는 사실을 깨달으며 큰 기쁨을 느꼈다. 이런 원리를 깨달아 넓은 수학적 영역을 환하게 밝혀주는 순간의 '아하!' 경험은 정말 특별한 것이다. 앞으로 발견할 수학의 면모들은 더욱 많으며, 최근에야 나는 다양한 수학 분야들을 충분히 이해하여 현대 수학이 어떻게 통일된 학문으로서 다른 과학 및 분야들과 연결되는지를 조금씩 깨닫고 있다.&lt;br /&gt;
&lt;br /&gt;
이 책은 내가 전문 수학자로서의 경력을 시작하기 전에 쓴 것으로, 지금과 같은 통찰력이나 경험이 부족했기에 일부 설명은 순진하거나 순수하게 느껴질 수도 있다. 그러나 당시의 나는 지금보다 고등학교 문제 풀이의 세계에 더 민감했기 때문에 이를 크게 수정하지 않기로 했다. 다만 텍스트를 LaTeX로 재정리하고, 내용을 좀 더 논리적으로 구성하며, 부정확하거나 혼란스러운 부분을 수정하고 몇 가지 연습문제를 추가했다. 일부 내용은 이제 구식이 되었다(예를 들어 페르마의 마지막 정리는 이제 엄밀히 증명되었다). 몇몇 문제는 더 발전된 수학 도구를 사용하면 보다 빠르고 깔끔하게 풀 수 있음을 이제 알지만, 이 책의 목적은 문제를 가장 세련되게 푸는 것이 아니라, 수학적 문제에 처음 접근할 때 여러 아이디어를 시도하고 일부를 제거하면서 체계적으로 문제를 다루는 과정이 어떻게 만족스러운 해답으로 이어질 수 있는지 보여주는 것이다.&lt;br /&gt;
&lt;br /&gt;
이 책의 재출판을 격려하고 지원해준 토니 가디너(Tony Gardiner)에게 깊은 감사를 표하며, 오랜 세월 동안 변함없이 지지해준 부모님께도 감사드린다. 또한 초판을 읽고 만난 모든 친구들과 지인들에게도 감사를 전한다. 끝으로, 15년 전에 사용하던 오래된 매킨토시 플러스 컴퓨터에서 이 책의 전자 사본을 복구해준 부모님과 플린더스 메디컬 센터의 컴퓨터 지원 부서에도 특별한 감사를 표한다.&lt;br /&gt;
&lt;br /&gt;
테렌스 타오&lt;br /&gt;
캘리포니아 대학교 로스앤젤레스 캠퍼스(UCLA) 수학과&lt;br /&gt;
2005년 12월&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
		
	</entry>
	<entry>
		<id>http://samediff.kr/wiki/index.php?title=0315_%ED%83%80%EC%98%A4_%EC%98%9B%EB%82%A0%EC%B1%85_2%ED%8C%90_%EC%84%9C%EB%AC%B8&amp;diff=16227</id>
		<title>0315 타오 옛날책 2판 서문</title>
		<link rel="alternate" type="text/html" href="http://samediff.kr/wiki/index.php?title=0315_%ED%83%80%EC%98%A4_%EC%98%9B%EB%82%A0%EC%B1%85_2%ED%8C%90_%EC%84%9C%EB%AC%B8&amp;diff=16227"/>
		<updated>2025-03-15T14:11:38Z</updated>

		<summary type="html">&lt;p&gt;Admin: 새 문서: https://a.co/d/99D9oUZ Solving Mathematical Problems: A Personal Perspective 1st Edition by Terence Tao    이 책을 처음 썼던 15년 전은 내 인생의 절반 전이다. 그동...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;https://a.co/d/99D9oUZ&lt;br /&gt;
Solving Mathematical Problems: A Personal Perspective 1st Edition&lt;br /&gt;
by Terence Tao &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
이 책을 처음 썼던 15년 전은 내 인생의 절반 전이다. 그동안 나는 고향을 떠나 다른 나라로 이주했고, 대학원을 마치고 강의를 하며 연구 논문을 쓰고, 대학원생들을 지도하고, 결혼하여 아이도 얻었다. 이제 내 삶과 수학을 바라보는 시각은 15살 때와는 분명히 다르다. 수학 경시대회 문제 풀이에서 손을 뗀 지도 오래되었으며, 만약 지금 같은 주제로 책을 쓴다면 지금 읽고 있는 책과는 매우 다른 모습일 것이다.&lt;br /&gt;
&lt;br /&gt;
수학은 다양한 면을 가진 학문이며, 이에 대한 경험과 이해는 시간이 흐르며 변화한다. 초등학생 시절 나는 형식적 조작의 추상적 아름다움과, 간단한 규칙들을 반복적으로 사용하여 놀라운 결과를 얻을 수 있다는 사실에 매료되었다. 고등학생 시절에는 수학 경시대회에 참가하며, 수학을 스포츠처럼 즐겼다. 이 책에 소개된 것과 같은 영리하게 고안된 수학 퍼즐을 풀기 위한 '묘수'를 찾는 데 재미를 느꼈다. 대학 학부 시절에는 현대 수학의 중심에 자리 잡고 있는 깊고 매혹적인 이론과 구조를 처음 접하며 경탄했다. 대학원 시절에는 자신만의 연구 주제를 가진 데 대한 자부심을 느꼈고, 미해결 문제를 풀어내는 독창적인 증명을 만들 때의 특별한 만족감을 알게 되었다. 전문적인 연구 수학자로서의 경력을 시작하면서는 현대 수학의 이론과 문제를 관통하는 직관과 동기를 보기 시작했고, 매우 복잡하고 깊이 있는 결과들조차도 본질적으로는 단순하고 상식적인 원리에 의해 인도될 수 있다는 사실을 깨달으며 큰 기쁨을 느꼈다. 이런 원리를 깨달아 넓은 수학적 영역을 환하게 밝혀주는 순간의 '아하!' 경험은 정말 특별한 것이다. 앞으로 발견할 수학의 면모들은 더욱 많으며, 최근에야 나는 다양한 수학 분야들을 충분히 이해하여 현대 수학이 어떻게 통일된 학문으로서 다른 과학 및 분야들과 연결되는지를 조금씩 깨닫고 있다.&lt;br /&gt;
&lt;br /&gt;
이 책은 내가 전문 수학자로서의 경력을 시작하기 전에 쓴 것으로, 지금과 같은 통찰력이나 경험이 부족했기에 일부 설명은 순진하거나 순수하게 느껴질 수도 있다. 그러나 당시의 나는 지금보다 고등학교 문제 풀이의 세계에 더 민감했기 때문에 이를 크게 수정하지 않기로 했다. 다만 텍스트를 LaTeX로 재정리하고, 내용을 좀 더 논리적으로 구성하며, 부정확하거나 혼란스러운 부분을 수정하고 몇 가지 연습문제를 추가했다. 일부 내용은 이제 구식이 되었다(예를 들어 페르마의 마지막 정리는 이제 엄밀히 증명되었다). 몇몇 문제는 더 발전된 수학 도구를 사용하면 보다 빠르고 깔끔하게 풀 수 있음을 이제 알지만, 이 책의 목적은 문제를 가장 세련되게 푸는 것이 아니라, 수학적 문제에 처음 접근할 때 여러 아이디어를 시도하고 일부를 제거하면서 체계적으로 문제를 다루는 과정이 어떻게 만족스러운 해답으로 이어질 수 있는지 보여주는 것이다.&lt;br /&gt;
&lt;br /&gt;
이 책의 재출판을 격려하고 지원해준 토니 가디너(Tony Gardiner)에게 깊은 감사를 표하며, 오랜 세월 동안 변함없이 지지해준 부모님께도 감사드린다. 또한 초판을 읽고 만난 모든 친구들과 지인들에게도 감사를 전한다. 끝으로, 15년 전에 사용하던 오래된 매킨토시 플러스 컴퓨터에서 이 책의 전자 사본을 복구해준 부모님과 플린더스 메디컬 센터의 컴퓨터 지원 부서에도 특별한 감사를 표한다.&lt;br /&gt;
&lt;br /&gt;
테렌스 타오&lt;br /&gt;
캘리포니아 대학교 로스앤젤레스 캠퍼스(UCLA) 수학과&lt;br /&gt;
2005년 12월&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
		
	</entry>
	<entry>
		<id>http://samediff.kr/wiki/index.php?title=Blog2025&amp;diff=16226</id>
		<title>Blog2025</title>
		<link rel="alternate" type="text/html" href="http://samediff.kr/wiki/index.php?title=Blog2025&amp;diff=16226"/>
		<updated>2025-03-15T14:10:30Z</updated>

		<summary type="html">&lt;p&gt;Admin: 새 문서: :0315 타오 옛날책 2판 서문&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;:[[0315 타오 옛날책 2판 서문]]&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
		
	</entry>
	<entry>
		<id>http://samediff.kr/wiki/index.php?title=%EB%8C%80%EB%AC%B8&amp;diff=16225</id>
		<title>대문</title>
		<link rel="alternate" type="text/html" href="http://samediff.kr/wiki/index.php?title=%EB%8C%80%EB%AC%B8&amp;diff=16225"/>
		<updated>2025-03-15T14:09:11Z</updated>

		<summary type="html">&lt;p&gt;Admin: /* memo */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Special:RecentChanges| RecentChanges]]&lt;br /&gt;
==memo==&lt;br /&gt;
* [[Machine Learning]]&lt;br /&gt;
* [[Quiz/Math/Stat]]&lt;br /&gt;
* [[영어]]&lt;br /&gt;
* blog&lt;br /&gt;
**[[blog2025|2025~]]&lt;br /&gt;
**[[blog|2014~2019]] &lt;br /&gt;
**[[Pilhoon.tistory.com|2011~2014]]&lt;br /&gt;
**[[Pilhoon.tistory.com/2010|2010]], [[Pilhoon.tistory.com/2009|2009]], [[Pilhoon.tistory.com/2008|2008]], [[Pilhoon.tistory.com/2007|2007]], [[Pilhoon.tistory.com/2006|2006]], [[Pilhoon.tistory.com/2005|2005]], [[Pilhoon.tistory.com/2004|2004]]&lt;br /&gt;
* [[scratch]]&lt;br /&gt;
** [[tabs|todo, browser tabs]], [https://www.youcandothecube.com/solve-it/2-x-2-solution how to cube]&lt;br /&gt;
*&amp;lt;del&amp;gt;[[Read-it-later]], [[I've read it]], [[Watch-later]] &amp;lt;/del&amp;gt;&lt;br /&gt;
* [http://kor.pe.kr/util/4/charmap.htm 특수문자리스트]&lt;br /&gt;
&lt;br /&gt;
== articles ==&lt;br /&gt;
=== scrap ===&lt;br /&gt;
*[[탤런트 코드]] / [[재능의 탄생]] / [[재능은 어떻게 단련되는가?]] / [[배지영 소설]] / [[황정은 장편소설 : 百의 그림자]] / [[야만적인 앨리스씨]] / [[순수박물관]] / [[엄청나게 시끄럽고 믿을 수 없게 가까운]] / [[나는 이 세상에 없는 계절이다]] / [[남아 있는 나날]] / [[너무나 많은 시작]] / [[생강]] / [[사랑하기 때문에]] / [[구경꾼들]] / [[은교]] / [[우리는 언젠가 죽는다]]  / [[태연한 인생]] / [[죄와 속죄의 저편]] / [[환상통]] / [[상냥한 폭력의 시대]] / [[82년생 김지영]] / [[혼자 산다는 것에 대하여]] / [[유혹의 학교]] / [[구의 증명]] / [[천재들의 머니게임]] / [[투자전쟁]] / [[배움의 기술]] / [[사는게 뭐라고]] / [[0908 그것이 나만은 아니기를|그것이 나만은 아니기를]] / [[0903 라이어스 포커|라이어스 포커]] / [[0905 모든것을 기억하는 남자|모든것을 기억하는 남자]] / [[0905 뉴턴과 화폐위조범|뉴턴과 화폐위조범]] / [[1003 아주 짧게 소개하는 수학|아주 짧게 소개하는 수학]] / [[1004 1년 만에 기억력 천재가 된 남자|1년 만에 기억력 천재가 된 남자]] / [[1009 실력과 노력으로 성공했다는 당신에게|실력과 노력으로 성공했다는 당신에게]] / [[0826 부메랑|부메랑]] / [[0903 무신론 기자, 크리스천 과학자에게 따지다|무신론 기자, 크리스천 과학자에게 따지다]] / [[0903 디디의 우산|디디의 우산]] / [[0903 절망의 나라의 행복한 젊은이들|절망의 나라의 행복한 젊은이들]] / [[0906 팩트풀니스|팩트풀니스]] / [[0906 일베의 사상|일베의 사상]] / [[0907 나는 그것에 대해 아주 오랫동안 생각해|나는 그것에 대해 아주 오랫동안 생각해]] / [[0907 지금부터 재판을 시작하겠습니다|지금부터 재판을 시작하겠습니다]] / [[0907 가벼운 나날|가벼운 나날]] / [[0908 연애의 기억|연애의 기억]] / [[0909 메트릭 스튜디오 | 메트릭 스튜디오]] / [[0909 네이버 증권으로 배우는 주식투자 실전 가이드북|네이버 증권으로 배우는 주식투자 실전 가이드북]] / [[0909 우리는 차별에 찬성합니다|우리는 차별에 찬성합니다]] / [[0910 쇼코의 미소 | 쇼코의 미소 ]] / [[0910 사는게 뭐라고|사는게 뭐라고]] / [[0910 피터 린치의 이기는 투자|피터 린치의 이기는 투자]] / [https://www.notion.so/02ea40ffd065429dadc098a2dde70099 시간 있으면 나 좀 좋아해 줘] / [https://www.notion.so/26fadd454fa742c7a7cccd812dfe169d 인플레이션의 시대] / [https://www.notion.so/8c038739fae2481081eacbae22cfaa05 인플레이션] / [https://tungsten-roundworm-f97.notion.site/7f552089d609497fac844c85fa85163c 깃털 도둑] / [https://tungsten-roundworm-f97.notion.site/ca7e45246af04d5e9671f03cf3737035 돈을 찍어내는 제왕, 연준] / [https://tungsten-roundworm-f97.notion.site/27b64672154947df9e19353d2fc5dd20 미래에서 온 남자 폰 노이만]&lt;br /&gt;
&lt;br /&gt;
=== manual &amp;amp;amp; howto ===&lt;br /&gt;
*[[C++]],[[C]],[[gdb]]&lt;br /&gt;
*[[Bash]] &lt;br /&gt;
*[[Emacs]]/[[Vim]] &lt;br /&gt;
*[[Linux]] / [[Solaris]] / [[Windows]] / [[Mac OS]] / [[vmware]] / [[android]]&lt;br /&gt;
*commands &lt;br /&gt;
** [[awk]] / [[find]] / [[join]] / [[nice]] / [[rsync]] / [[sed]] / [[svn]] / [[tcpdump]] / [[tr]] / [[mutt]] / [[curl]] / [[column]] / [[zip]] / [[date]] / [[file]] / [[scp]] / [[printf]] / [[sort]] / [[tar]] / [[strace]]&lt;br /&gt;
* [[python]] / [[jupyter]] / [[matplotlib,seaborn]]&lt;br /&gt;
* [[R]] / [[numpy]] / [[matlab]] / [[sklearn]] / [[PIL_Image / opencv]]&lt;br /&gt;
* [[tensorflow]] / [[torch]] / [[mxnet]] / [[lua]] &lt;br /&gt;
* [[git]]&lt;br /&gt;
* [[TeX|TeX, MathJax]]&lt;br /&gt;
*&amp;lt;del&amp;gt;[[sqlite]]&amp;lt;/del&amp;gt;&lt;br /&gt;
*&amp;lt;del&amp;gt;[[RFCs]]&amp;lt;/del&amp;gt;&lt;br /&gt;
*&amp;lt;del&amp;gt;[[Java]] &amp;lt;/del&amp;gt;&lt;br /&gt;
*&amp;lt;del&amp;gt;[[Php]] &amp;lt;/del&amp;gt;&lt;br /&gt;
*[[mysql/hive/redis]]&lt;br /&gt;
* [https://guides.github.com/features/mastering-markdown/ github markdown guide] / [[markdown]]&lt;br /&gt;
&lt;br /&gt;
== 삽질들 ==&lt;br /&gt;
* [[1 million factorial]]&lt;br /&gt;
** [[prime numbers]]&lt;br /&gt;
* [[TV 무선으로 보기]] (실패)&lt;br /&gt;
* [[x60s에 ssd달기]]&lt;br /&gt;
* [[pdf 홀짝페이지 파일 합치기]]&lt;br /&gt;
&lt;br /&gt;
== 위키 ==&lt;br /&gt;
* [http://www.mediawiki.org/wiki/Manual:Configuration_settings 설정하기]&lt;br /&gt;
* [http://www.mediawiki.org/wiki/Manual:FAQ 미디어위키 FAQ]&lt;br /&gt;
* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce 미디어위키 발표 메일링 리스트]&lt;br /&gt;
* [http://meta.wikimedia.org/wiki/Help:Contents 미디어위키 help]&lt;br /&gt;
* [[내가 수정한 것들]]&lt;br /&gt;
* 기타참고&lt;br /&gt;
**[https://twitter.com/Floating_ghoti/status/1195678171917537281 40여분짜리 음악들]&lt;br /&gt;
**[http://en.wikipedia.org/wiki/Help:Wiki_markup wiki markup], [https://www.mediawiki.org/wiki/Help:Formatting media wiki Help:Formatting], [https://www.mediawiki.org/wiki/Extension:SyntaxHighlight media wiki SyntaxHighlight], [https://www.mediawiki.org/wiki/Help:Tables mediawiki table]&lt;br /&gt;
**[http://meta.wikimedia.org/wiki/Help:Advanced_editing advanced editing]&lt;br /&gt;
**[http://en.wikipedia.org/wiki/Wikipedia:Cheatsheet cheatsheet]&lt;br /&gt;
**[http://www.mediawiki.org/wiki/Help:Formatting Help:Formatting]&lt;br /&gt;
**[https://meta.wikimedia.org/wiki/Help:Displaying_a_formula 수식]&lt;br /&gt;
**[https://www.mediawiki.org/wiki/Topic:Ro5g5jyw935kaksb template variables within html tags] : &amp;lt;c&amp;gt;{{#tag:html | &amp;lt;blabla&amp;gt;{{{var}}}&amp;lt;/blabla&amp;gt;}}&amp;lt;/c&amp;gt;&lt;br /&gt;
**[https://www.mediawiki.org/wiki/Topic:Pzvu1613ewnfahcd get exact image path] : &amp;lt;c&amp;gt;{{filepath:}}&amp;lt;/c&amp;gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
		
	</entry>
	<entry>
		<id>http://samediff.kr/wiki/index.php?title=Cot%EC%97%B0%EA%B5%AC%EB%8F%99%ED%96%A5&amp;diff=16224</id>
		<title>Cot연구동향</title>
		<link rel="alternate" type="text/html" href="http://samediff.kr/wiki/index.php?title=Cot%EC%97%B0%EA%B5%AC%EB%8F%99%ED%96%A5&amp;diff=16224"/>
		<updated>2025-02-28T15:34:22Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;chatgpt. 20250301.&lt;br /&gt;
&amp;lt;markdown&amp;gt;&lt;br /&gt;
&lt;br /&gt;
- 최신 논문 목록 및 요약&lt;br /&gt;
- Chain of Thought 개념과 이론적 배경&lt;br /&gt;
- 인공지능 분야에서의 CoT 연구와 응용 사례&lt;br /&gt;
- 실습 가능한 오픈소스 코드 및 리소스 정리&lt;br /&gt;
- 실전 적용을 위한 가이드 및 예제 코드 설명&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Chain of Thought (CoT) 최신 연구 조사 보고서&lt;br /&gt;
&lt;br /&gt;
## 개요 및 이론적 배경&lt;br /&gt;
**Chain of Thought (CoT)**은 복잡한 문제를 풀 때 **사고의 연쇄**, 즉 중간 추론 단계를 언어 형태로 생성하도록 유도하는 기법입니다 ([Language Models Perform Reasoning via Chain of Thought](https://research.google/blog/language-models-perform-reasoning-via-chain-of-thought/#:~:text=In%20%E2%80%9CChain%20of%20Thought%20Prompting,solvable%20with%20standard%20prompting%20methods)). 기존의 표준 프롬프트에서는 모델이 바로 정답만 출력하지만, CoT 프롬프트를 사용하면 문제를 단계별로 분해하여 해결 과정을 서술한 뒤 최종 답을 도출합니다 ([Language Models Perform Reasoning via Chain of Thought](https://research.google/blog/language-models-perform-reasoning-via-chain-of-thought/#:~:text=With%20standard%20prompting%20,of%20thought%20via%20prompting%20only)). 이러한 “생각의 연쇄”를 통해 모델이 인간처럼 단계적으로 사고하도록 유도하며, 특히 산술, 상식 추론 등의 **다단계 추론 문제**에서 성능을 크게 향상시킬 수 있음이 나타났습니다 ([Language Models Perform Reasoning via Chain of Thought](https://research.google/blog/language-models-perform-reasoning-via-chain-of-thought/#:~:text=In%20%E2%80%9CChain%20of%20Thought%20Prompting,solvable%20with%20standard%20prompting%20methods)) ([Language Models Perform Reasoning via Chain of Thought](https://research.google/blog/language-models-perform-reasoning-via-chain-of-thought/#:~:text=prompting%20can%20improve%20performance%20on,around%20100B)). 예를 들어, 단순 질문에 바로 답하게 하면 틀렸던 산술 문제도 프롬프트에 *“차근차근 생각해보자”*라는 문장을 추가하여 단계별 풀이를 유도하면 정답을 도출할 수 있습니다 ([Chain-of-Thought Prompting | Prompt Engineering Guide&amp;lt;!-- --&amp;gt; ](https://www.promptingguide.ai/techniques/cot#:~:text=Output%3A)). 이러한 효과는 충분히 **대규모**(약 100억~1000억 이상) 파라미터를 가진 언어 모델에서 두드러지며, CoT로 유도한 **추론 과정** 자체는 사람이 언어로 풀 수 있는 어떤 문제에도 적용 가능하다고 보고되었습니다 ([Language Models Perform Reasoning via Chain of Thought](https://research.google/blog/language-models-perform-reasoning-via-chain-of-thought/#:~:text=Chain%20of%20thought%20reasoning%20allows,around%20100B)).&lt;br /&gt;
&lt;br /&gt;
 ([Language Models Perform Reasoning via Chain of Thought](https://research.google/blog/language-models-perform-reasoning-via-chain-of-thought/#:~:text=With%20standard%20prompting%20,of%20thought%20via%20prompting%20only)) ([Language Models Perform Reasoning via Chain of Thought](https://research.google/blog/language-models-perform-reasoning-via-chain-of-thought/)) *표준 프롬프트(좌) vs Chain-of-Thought 프롬프트(우) 비교 예시. CoT 프롬프트에서는 모델이 중간 추론 단계를 거쳐 최종 답을 산출한다.*&lt;br /&gt;
&lt;br /&gt;
CoT 개념의 이론적 배경에는 **스크래치패드(scratchpad)** 학습과 **정당화(rationale)** 연구가 있습니다. 과거에는 모델이 중간 계산 과정을 출력하도록 하려면 대량의 추론 과정을 담은 데이터로 **파인튜닝**해야 했습니다 ([Language Models Perform Reasoning via Chain of Thought](https://research.google/blog/language-models-perform-reasoning-via-chain-of-thought/#:~:text=intuitive%20thought%20process%20when%20working,modifying%20the%20language%20model%E2%80%99s%20weights)). 예를 들어 Nye 등(2021)은 **스크래치패드**를 통해 모델이 계산 과정을 메모리에 적으며 복잡한 문제를 풀도록 훈련했고, Rajani 등(2019)이나 Shwartz 등(2020)은 **상식 추론** 질문에 대한 인간의 설명(reasoning)을 데이터로 수집하여 모델이 **정답 근거**를 생성하도록 시도했습니다. 이러한 선행 연구들은 모델이 **중간 단계**를 거쳐 답하도록 하면 성능이 좋아짐을 보였지만, 일일이 많은 추론 데이터를 마련해야 하는 한계가 있었습니다. **CoT 프롬프트**의 등장은 이러한 중간 추론을 **몇 가지 예시만으로도** 유도할 수 있음을 보인 것으로, 추가 학습 없이 프롬프트 설계만으로도 효과를 얻을 수 있다는 점에서 큰 의의가 있습니다 ([Language Models Perform Reasoning via Chain of Thought](https://research.google/blog/language-models-perform-reasoning-via-chain-of-thought/#:~:text=intuitive%20thought%20process%20when%20working,modifying%20the%20language%20model%E2%80%99s%20weights)). 또한 최근 Merrill &amp;amp; Sabharwal(2023) 등의 이론 연구에서는, 언어 모델에 CoT 방식의 추가적인 출력 단계를 허용하면 **변환기의 표현력**이 높아져 단순 출력만으로는 풀지 못하는 더 복잡한 계산도 수행 가능함을 보이는 등, CoT의 잠재력에 대한 **이론적 분석**도 진행되고 있습니다.&lt;br /&gt;
&lt;br /&gt;
## 최근 5년간 CoT 관련 주요 연구 동향&lt;br /&gt;
최근 5년 이내 CoT와 관련하여 많은 의미있는 연구들이 발표되었습니다. 주요 논문과 그 기여를 정리하면 다음과 같습니다:&lt;br /&gt;
&lt;br /&gt;
- **Wei et al. (2022), *“Chain-of-Thought Prompting Elicits Reasoning in LLMs”*** – 최초로 CoT 프롬πτ 기법을 제안한 연구로, 간단한 **Few-shot** 프롬프트만으로도 언어 모델에게 단계적 사고를 유도할 수 있음을 보여주었습니다. 이 방법을 통해 1000억 규모 이상의 대형 모델에서 산술, 상식, 논리 추론 문제 성능이 크게 향상되었으며 ([Language Models Perform Reasoning via Chain of Thought](https://research.google/blog/language-models-perform-reasoning-via-chain-of-thought/#:~:text=In%20%E2%80%9CChain%20of%20Thought%20Prompting,solvable%20with%20standard%20prompting%20methods)), 특히 5400억 규모 PaLM 모델에 CoT를 적용하여 GSM8K 수학 문제에서 기존 SOTA를 능가하는 58% 정확도를 달성했습니다 ([Language Models Perform Reasoning via Chain of Thought](https://research.google/blog/language-models-perform-reasoning-via-chain-of-thought/#:~:text=For%20these%20two%20benchmarks%2C%20using,prompting%20for%20large%20model%20sizes)) ([Language Models Perform Reasoning via Chain of Thought](https://research.google/blog/language-models-perform-reasoning-via-chain-of-thought/#:~:text=On%20the%20GSM8K%20dataset%20of,set%20and%20then%20ranking%20potential)). 또한 CoT의 효과가 **모델 크기에 따라 발생하는 emergent behavior**임을 관찰하여, 약 100억~백억 단위 이상의 모델에서 비로소 CoT가 유의미한 성능 향상을 가져온다는 사실을 보고했습니다 ([Language Models Perform Reasoning via Chain of Thought](https://research.google/blog/language-models-perform-reasoning-via-chain-of-thought/#:~:text=prompting%20can%20improve%20performance%20on,around%20100B)).&lt;br /&gt;
&lt;br /&gt;
- **Kojima et al. (2022), *“Large Language Models are Zero-Shot Reasoners”*** – CoT 프롬프트를 **Zero-shot**으로도 활용할 수 있음을 보여준 연구입니다. 예시를 전혀 주지 않고도 질문 뒤에 *“Let’s think step by step.”(차근차근 생각해보자)*라는 한 문장만 덧붙이는 간단한 방법으로, 모델이 스스로 단계별 풀이를 생성하도록 유도할 수 있음을 발견했습니다 ([[2205.11916] Large Language Models are Zero-Shot Reasoners](https://arxiv.org/abs/2205.11916#:~:text=the%20standard%20scaling%20laws%20for,to)) ([[2205.11916] Large Language Models are Zero-Shot Reasoners](https://arxiv.org/abs/2205.11916#:~:text=prompt%20template%2C%20significantly%20outperforms%20zero,hints%20at%20untapped%20and%20understudied)). 이렇게 생성된 **Zero-shot CoT**는 기존에 예시 없이 바로 답변하던 경우 대비 다양한 추론 벤치마크에서 성능을 크게 향상시켰습니다. 예를 들어 MultiArith 산술 문제는 정확도가 17.7%에서 78.7%로, GSM8K는 10.4%에서 40.7%로 크게 상승했습니다 ([[2205.11916] Large Language Models are Zero-Shot Reasoners](https://arxiv.org/abs/2205.11916#:~:text=SVAMP%29%2C%20symbolic%20reasoning%20,We%20hope%20our)). 이는 단 하나의 보편적인 프롬프트로 **다양한 과제**에서 큰 개선을 이뤄낸 사례로, LLM에 내재된 **잠재적 추론 능력**을 간단한 문구로 끌어낸 점이 주목받았습니다.&lt;br /&gt;
&lt;br /&gt;
- **Wang et al. (2022), *“Self-Consistency Improves CoT Reasoning in LMs”*** – CoT의 **디코딩 전략**을 개선한 연구로, 정답의 신뢰도를 높이는 **Self-Consistency(자가 일관성)** 기법을 제안했습니다. 기존에는 CoT 프롬프트로 하나의 추론 경로만 생성했다면, Self-Consistency에서는 같은 질문에 대해 **여러 가지 서로 다른 추론 과정**을 샘플링하여 얻은 뒤, 그 중 가장 일관된 최종 답을 다수결 등으로 선택합니다 ([[2203.11171] Self-Consistency Improves Chain of Thought Reasoning in Language Models](https://arxiv.org/abs/2203.11171#:~:text=paper%2C%20we%20propose%20a%20new,and%20commonsense%20reasoning%20benchmarks%2C%20including)). 직관적으로, 복잡한 문제는 생각하는 경로는 다를 수 있어도 정답은 동일하다는 점을 활용한 것입니다 ([[2203.11171] Self-Consistency Improves Chain of Thought Reasoning in Language Models](https://arxiv.org/abs/2203.11171#:~:text=diverse%20set%20of%20reasoning%20paths,challenge%20%28%2B3.9)). 실험 결과 Self-Consistency를 적용하면 GSM8K에서 +17.9%, SVAMP에서 +11.0%, AQuA에서 +12.2% 등 CoT 성능이 크게 향상되었고 ([[2203.11171] Self-Consistency Improves Chain of Thought Reasoning in Language Models](https://arxiv.org/abs/2203.11171#:~:text=correct%20answer,challenge%20%28%2B3.9)), Greedy decoding보다 **안정적인 정답률**을 확보할 수 있음을 보여주었습니다.&lt;br /&gt;
&lt;br /&gt;
- **Zhou et al. (2022), *“Least-to-Most Prompting”*** – CoT의 한계를 보완하기 위해 **문제 분할(decomposition)** 아이디어를 접목한 프롬프트 전략입니다. CoT는 프롬프트에 제시한 예시보다 더 어려운 문제가 주어지면 일반화에 실패하는 경향이 있는데 ([[2205.10625] Least-to-Most Prompting Enables Complex Reasoning in Large Language Models](https://arxiv.org/abs/2205.10625#:~:text=%3E%20Abstract%3AChain,manipulation%2C%20compositional%20generalization%2C%20and%20math)), **Least-to-Most Prompting (LtM)**은 어려운 문제를 더 쉬운 **하위 문제들**로 나누어 순차적으로 해결하도록 프롬프트를 구성함으로써 이 문제를 해결합니다 ([[2205.10625] Least-to-Most Prompting Enables Complex Reasoning in Large Language Models](https://arxiv.org/abs/2205.10625#:~:text=on%20tasks%20which%20requires%20solving,A%20notable%20finding%20is%20that)). 먼저 간단한 부분문제부터 풀고 그 해답을 이용해 점진적으로 복잡한 전체 문제를 풀어나가는 방식으로, **쉬운 것에서 어려운 것**으로 일반화하는 능력을 향상시켰습니다 ([[2205.10625] Least-to-Most Prompting Enables Complex Reasoning in Large Language Models](https://arxiv.org/abs/2205.10625#:~:text=novel%20prompting%20strategy%2C%20least,benchmark%20SCAN%20in%20any%20split)). 그 결과 GPT-3 모델을 활용한 SCAN 벤치마크 실험에서, LtM 프롬프트는 불과 14개의 예시만으로도 99% 이상의 정확도를 달성하여, CoT의 16% 대비 월등한 성능을 보였습니다 ([[2205.10625] Least-to-Most Prompting Enables Complex Reasoning in Large Language Models](https://arxiv.org/abs/2205.10625#:~:text=difficult%20problems%20than%20those%20seen,the%20tasks%20in%20the%20Appendix)). 이처럼 LtM은 단계별 문제 분할을 통해 CoT의 **일반화 범위**를 넓힌 사례입니다.&lt;br /&gt;
&lt;br /&gt;
- **Zelikman et al. (2022), *“STaR: Self-Taught Reasoner”*** – **모델 스스로 추론 데이터를 생성하여 학습**하도록 하는 새로운 방법론입니다. Few-shot CoT 예시 몇 개로 시작하여 모델이 많은 질문들에 대한 **추론 과정(rationale)**을 생성하게 한 뒤, **정답을 맞춘** 사례들의 추론만 모아 다시 모델을 파인튜닝하는 **부트스트랩 루프**를 제안했습니다 ([[2203.14465] STaR: Bootstrapping Reasoning With Reasoning](https://arxiv.org/abs/2203.14465#:~:text=iteratively%20leverage%20a%20small%20number,tuning%20a)). 모델이 틀린 답을 낸 경우 정답을 알려주고 다시 reasoning을 생성하게 하는 식으로 반복하여, 점차 더 복잡한 문제도 풀 수 있도록 모델을 향상시킵니다 ([[2203.14465] STaR: Bootstrapping Reasoning With Reasoning](https://arxiv.org/abs/2203.14465#:~:text=iteratively%20leverage%20a%20small%20number,tuning%20a)). 이렇게 **모델이 생성한 데이터로 다시 모델을 학습**시키는 자훈련(self-training) 방식으로, STaR 기법은 별도 정답만 있는 큰 데이터셋으로부터 합리적인 추론 과정을 **부트스트랩**하는 데 성공했습니다. 그 결과 CommonsenseQA 등에서 30배 큰 최첨단 모델과 비슷한 성능을 달성하여, **자기 추론 학습**의 가능성을 보여주었습니다 ([[2203.14465] STaR: Bootstrapping Reasoning With Reasoning](https://arxiv.org/abs/2203.14465#:~:text=rationale%20examples%3B%20if%20the%20generated,from%20its%20own%20generated%20reasoning)).&lt;br /&gt;
&lt;br /&gt;
- **Zhang et al. (2022), *“Automatic Chain-of-Thought (Auto-CoT)”*** – CoT **데모 예시를 자동으로 생성**해주는 프롬프트 구성 기법입니다. 앞서 Wei 등의 Manual-CoT는 사람이 직접 시연 예제를 만들었는데, Auto-CoT는 LLM 자체에 *“Let’s think step by step”*를 사용한 Zero-shot CoT로 여러 문제의 풀이는 만들어내고, 그중 **다양하고 대표적인** 예시들을 선별하여 데모로 사용하는 방식을 취합니다 ([[2210.03493] Automatic Chain of Thought Prompting in Large Language Models](https://ar5iv.org/abs/2210.03493#:~:text=paradigm%20hinges%20on%20the%20hand,3)) ([[2210.03493] Automatic Chain of Thought Prompting in Large Language Models](https://ar5iv.org/abs/2210.03493#:~:text=by%20one,cot)). 구체적으로, **질문 클러스터링**을 통해 유형을 다양화하고 각 군집 대표 질문에 대한 CoT 풀이를 생성한 후, 길이 등의 단순 기준으로 품질이 괜찮은 추론을 뽑아 예시 세트로 삼습니다 ([Chain-of-Thought Prompting | Prompt Engineering Guide&amp;lt;!-- --&amp;gt; ](https://www.promptingguide.ai/techniques/cot#:~:text=lead%20to%20suboptimal%20solutions,chains%20to%20construct%20the%20demonstrations)) ([Chain-of-Thought Prompting | Prompt Engineering Guide&amp;lt;!-- --&amp;gt; ](https://www.promptingguide.ai/techniques/cot#:~:text=,CoT%20with%20simple%20heuristics)). 이러한 자동 구성한 Few-shot 프롬프트를 GPT-3 등에 적용한 결과, 사람 손으로 만든 CoT 프롬프트에 필적하거나 이를 능가하는 성능을 10개 벤치마크에서 달성했습니다 ([[2210.03493] Automatic Chain of Thought Prompting in Large Language Models](https://ar5iv.org/abs/2210.03493#:~:text=constructing%20demonstrations,cot)). Auto-CoT는 향후 프롬프트 엔지니어링의 수작업을 줄이는 방향의 연구로 주목받았습니다.&lt;br /&gt;
&lt;br /&gt;
- **Yao et al. (2023), *“Tree-of-Thoughts (ToT)”*** – CoT 개념을 확장하여 **브랜치 탐색**을 가능케 한 추론 기법입니다. 일반 CoT는 하나의 연쇄적 생각 경로만 따라가지만, **ToT**는 마치 나무를 가지치기하듯이 **여러 가능한 생각의 경로**를 분기 탐색하면서 최선의 해결책을 찾습니다 ([[2305.10601] Tree of Thoughts: Deliberate Problem Solving with Large Language Models](https://arxiv.org/abs/2305.10601#:~:text=initial%20decisions%20play%20a%20pivotal,significantly%20enhances%20language%20models%27%20problem)). 언어 모델의 출력 단위를 “생각(thought)” 단위로 일반화하고, 각 단계에서 다음 진행을 여러 대안으로 펼쳐본 뒤 **평가/백트래킹**을 통해 최적 경로를 추린다는 점에서, ToT는 탐색적 사고(exploration)를 도입한 체계적인 프롬프트 프레임워크입니다 ([[2305.10601] Tree of Thoughts: Deliberate Problem Solving with Large Language Models](https://arxiv.org/abs/2305.10601#:~:text=which%20generalizes%20over%20the%20popular,instance%2C%20in%20Game%20of%2024)) ([[2305.10601] Tree of Thoughts: Deliberate Problem Solving with Large Language Models](https://arxiv.org/abs/2305.10601#:~:text=that%20serve%20as%20intermediate%20steps,prompts%3A%20%2019%20this%20https)). 실험적으로도 ToT는 **전략적 탐색**이 필요한 문제들에서 큰 성공을 거두었는데, 예를 들어 숫자 24 만들기 게임(Game of 24)에서 GPT-4가 CoT로는 4% 정답률에 그친 반면, ToT 방법을 적용하자 **74%**의 높은 성공률을 보였습니다 ([[2305.10601] Tree of Thoughts: Deliberate Problem Solving with Large Language Models](https://arxiv.org/abs/2305.10601#:~:text=experiments%20show%20that%20ToT%20significantly,all%20prompts%3A%20this%20https%20URL)). 이 연구는 CoT의 한계를 뛰어넘어 **탐색적 Chain-of-Thought**이라는 새로운 방향을 제시한 것으로 평가됩니다.&lt;br /&gt;
&lt;br /&gt;
이 외에도 CoT의 효과를 이끌어내기 위한 다양한 변형 연구들이 진행되고 있습니다. 예를 들어, CoT와 **외부 도구 사용**을 결합한 **ReAct** 방식(Yao 등, 2022)은 모델이 “생각(추론)”과 “행동(도구 사용)” 단계를 번갈아 수행함으로써 복잡한 문제를 해결하도록 했습니다. 또 다른 방향으로, **Reasoning distillation** 연구들은 거대 모델이 생성한 CoT를 smaller 모델이 학습하여 추론 능력을 전이받도록 시도합니다. 전반적으로, **Chain-of-Thought**은 2022년 이후 급속히 발전하는 거대언어모델 분야에서 **복잡한 추론 문제를 해결하는 핵심 기법**으로 자리잡았으며, 다양한 응용 및 변형이 지속적으로 나오고 있습니다.&lt;br /&gt;
&lt;br /&gt;
## CoT의 활용 사례 및 응용 분야&lt;br /&gt;
CoT의 도입 이후 **언어 모델의 추론 능력**에 큰 진전이 나타나면서, 여러 분야의 문제 해결에 CoT가 활용되고 있습니다. 대표적으로 **수학 단어 문제** 풀이에서 CoT는 필수적인 기술로 자리잡았습니다. 모델이 여러 단계의 계산이나 논리를 거쳐야 하는 GSM8K 같은 산수 문제에서, CoT 프롬프트를 사용하면 단계별로 풀어서 정답률을 크게 높일 수 있습니다 ([[2205.11916] Large Language Models are Zero-Shot Reasoners](https://arxiv.org/abs/2205.11916#:~:text=prompt%20template%2C%20significantly%20outperforms%20zero,hints%20at%20untapped%20and%20understudied)). **상식 추론**(commonsense reasoning) 분야에서도 CoT가 활용되어, 사람의 사고 과정을 흉내내 설명을 만들어가며 질문에 답하도록 합니다. 예컨대 **StrategyQA**나 **CommonsenseQA** 같은 지식+추론 문제가 이에 해당하며, CoT를 쓰면 모델이 바로 답을 떠올리지 못하는 경우에도 관련 상식을 끌어모아 논리적 결론을 도출할 수 있습니다. **논리 퍼즐**이나 **언어 추론**(logical reasoning)에도 CoT가 쓰입니다. Kojima 등의 연구에서 보여준 동전 뒤집기, 날짜 계산, 개체 추적 등 문제들은 한두 번의 토큰 예측으로 풀기 어려웠지만, CoT로 일련의 추론 단계를 거치자 성능이 크게 향상되었습니다 ([[2205.11916] Large Language Models are Zero-Shot Reasoners](https://arxiv.org/abs/2205.11916#:~:text=prompt%20template%2C%20significantly%20outperforms%20zero,hints%20at%20untapped%20and%20understudied)). 이처럼 CoT는 **복합적인 추론 시나리오** 전반에 적용되어, 모델의 문제 해결 과정을 사람이 이해할 수 있는 형태로 만들어준다는 장점도 있습니다 (출력된 체인-of-thought 자체가 일종의 **설명**이 되므로, 투명성과 설명가능성이 향상됨).&lt;br /&gt;
&lt;br /&gt;
또한 CoT는 **복잡한 질문에 대한 AI 어시스턴트의 응답 품질**을 높이기 위해 실무적으로도 활용됩니다. 일례로 거대 챗봇 모델(예: ChatGPT, GPT-4 등)은 겉으로 드러나진 않아도 내부적으로 복잡한 질문에 답변하기 전에 단계별로 사고하는 경향이 있는데 ([Introducing the Open Chain of Thought Leaderboard](https://huggingface.co/blog/leaderboard-cot#:~:text=may%20improve%20explainability%20and%20accuracy,users%20when%20choosing%20a%20model)), 이는 CoT 스타일의 추론이 모델에 내재화되어있음을 시사합니다. CoT 방식은 다양한 **LLM 기반 에이전트**에게도 도입되어, 예를 들어 **LangChain** 같은 프레임워크를 통해 프롬프트에 체인-of-thought를 추가함으로써 모델이 더 신뢰도 높은 답을 찾도록 돕습니다 ([Introducing the Open Chain of Thought Leaderboard](https://huggingface.co/blog/leaderboard-cot#:~:text=Chain,thought%20traces%20may)). 실제 응용 면에서, CoT는 **코드 디버깅**이나 **복잡한 글 구성** 같은 창의적 작업에도 활용됩니다. 모델이 버그 원인을 단계적으로 추론하고 수정 방향을 제시하게 하거나 ([Mastering Chain of Thought (CoT) Prompting for Practical AI Tasks](https://huggingface.co/blog/luigi12345/chain-of-thoughts-guide#:~:text=,step%20problems%20in%20mathematics)) ([Mastering Chain of Thought (CoT) Prompting for Practical AI Tasks](https://huggingface.co/blog/luigi12345/chain-of-thoughts-guide#:~:text=Prompt%3A%20,3)), 긴 문장을 요약하거나 아이디어를 구조화할 때도 CoT로 단계적인 출력을 유도하면 보다 일관된 결과를 얻을 수 있다는 보고가 있습니다 ([Mastering Chain of Thought (CoT) Prompting for Practical AI Tasks](https://huggingface.co/blog/luigi12345/chain-of-thoughts-guide#:~:text=Chain%20of%20Thought%20prompting%20is,was%20derived%E2%80%94essential%20for%20tasks%20like)) ([Mastering Chain of Thought (CoT) Prompting for Practical AI Tasks](https://huggingface.co/blog/luigi12345/chain-of-thoughts-guide#:~:text=Traditional%20AI%20outputs%20often%20feel,For%20example)). 나아가, **계획 및 실행**(planning &amp;amp; acting) 영역에서는 CoT와 외부 도구 사용이 결합된 **퍼렉션(ReAct)**, **체인오브헌(Plan-and-Solve)** 등의 에이전트가 복잡한 과제를 해결하는 데에 CoT를 필수 구성요소로 활용하고 있습니다.&lt;br /&gt;
&lt;br /&gt;
정리하면, CoT는 **수학/논리 문제 해결, 상식 질의응답, 복잡한 추론 대화, 코드 분석** 등 **다양한 AI 응용 분야**에서 성능을 높이는 데 활용되고 있습니다. CoT 사용 시 출력되는 **추론 경로(trace)**는 사람에게 결과에 이르는 논리를 제공하여 신뢰성을 높이고, 모델에게는 한층 난도 높은 작업을 풀 수 있는 **사고의 도구**를 제공한다고 볼 수 있습니다. 이러한 이유로 CoT는 현재 LLM 응용의 **디폴트 전략**으로 자리잡고 있으며, 모델의 추론력을 끌어올리기 위한 연구가 활발히 계속되는 추세입니다.&lt;br /&gt;
&lt;br /&gt;
## CoT 실습 자료 및 오픈소스 활용 가이드&lt;br /&gt;
CoT 개념과 기법은 공개된 여러 자료와 코드를 통해 직접 실습해볼 수 있습니다. 아래에는 CoT를 구현하거나 실험하기 위한 주요 오픈소스 리소스와 활용 방법을 소개합니다.&lt;br /&gt;
&lt;br /&gt;
- **공개 구현 코드 및 프로젝트**: 많은 CoT 관련 연구들이 공식 구현을 깃허브에 공개하고 있습니다. 예를 들어, Kojima 등(2022)의 *Zero-shot CoT* 공식 구현이 GitHub에 공개되어 있어 해당 코드를 통해 *“Let’s think step by step”* 프롬프트 실험을 해볼 수 있습니다 ([[2205.11916] Large Language Models are Zero-Shot Reasoners](https://arxiv.org/abs/2205.11916#:~:text=LLMs%20before%20crafting%20finetuning%20datasets,shot%20exemplars)). 또한 Amazon 연구팀이 공개한 *Auto-CoT* 구현코드 ([[2210.03493] Automatic Chain of Thought Prompting in Large Language Models](https://ar5iv.org/abs/2210.03493#:~:text=constructing%20demonstrations,cot))를 사용하면, 주어진 문제세트에 대해 자동으로 CoT 예시 프롬프트를 생성하고 평가해볼 수 있습니다. Yao 등(2023)의 *Tree-of-Thoughts* 역시 공식 저장소에서 코드와 프롬프트 예시를 제공하고 있어, 이를 참고하여 모델의 단계별 **분기 탐색**을 구현해볼 수 있습니다 ([[2305.10601] Tree of Thoughts: Deliberate Problem Solving with Large Language Models](https://arxiv.org/abs/2305.10601#:~:text=experiments%20show%20that%20ToT%20significantly,all%20prompts%3A%20this%20https%20URL)). 이처럼 주요 CoT 기법들의 오픈소스 코드를 활용하면 논문 수준의 실험을 재현하거나 자신의 데이터에 적용하여 **재현 실험**을 할 수 있습니다.&lt;br /&gt;
&lt;br /&gt;
- **체인 오브 쏘트 허브 및 리더보드**: 최근 Hugging Face에서는 **Open Chain-of-Thought Leaderboard**를 운영하여 여러 공개 LLM들의 CoT 능력을 비교 평가하고 있습니다 ([Introducing the Open Chain of Thought Leaderboard](https://huggingface.co/blog/leaderboard-cot#:~:text=Unlike%20most%20performance%20based%20leaderboards%2C,thought%20prompting)). 이 leaderboard는 모델이 CoT 프롬프트를 활용했을 때와 안 했을 때의 **성능 차이(accuracy gain)**를 측정함으로써, CoT의 효과를 정량화합니다 ([Introducing the Open Chain of Thought Leaderboard](https://huggingface.co/blog/leaderboard-cot#:~:text=Unlike%20most%20performance%20based%20leaderboards%2C,thought%20prompting)). 이를 통해 사용자는 다양한 모델 (예: GPT-3, Llama2, PaLM 등)의 CoT 향상 정도를 확인하고 자신의 응용에 적합한 모델을 선택하는 데 참고할 수 있습니다. 또한 **chain-of-thought-hub** ([GitHub - FranxYao/chain-of-thought-hub: Benchmarking large language models' complex reasoning ability with chain-of-thought prompting](https://github.com/FranxYao/chain-of-thought-hub#:~:text=)) 같은 오픈소스 프로젝트에서는 여러 복잡한 추론 벤치마크에 대해 LLM들의 CoT 성능을 벤치마킹할 수 있는 **주피터 노트북**과 평가 스크립트를 제공합니다. 이를 활용하면 코랩(Colab) 등에서 손쉽게 **CoT 프롬프트 실험**을 수행해보고 결과를 확인할 수 있습니다.&lt;br /&gt;
&lt;br /&gt;
- **프롬프트 설계와 실행 가이드**: CoT를 실습하려면 우선 **프롬프트 엔지니어링**이 중요합니다. Few-shot CoT의 경우, 먼저 풀고자 하는 문제 유형에 맞는 예제 몇 개를 만들고 각 예제에 대해 질문과 단계별 해설, 그리고 최종 답 형식으로 프롬프트를 구성합니다 ([Chain-of-Thought Prompting | Prompt Engineering Guide&amp;lt;!-- --&amp;gt; ](https://www.promptingguide.ai/techniques/cot#:~:text=Introduced%20in%20Wei%20et%20al,that%20require%20reasoning%20before%20responding)) ([Chain-of-Thought Prompting | Prompt Engineering Guide&amp;lt;!-- --&amp;gt; ](https://www.promptingguide.ai/techniques/cot#:~:text=1,The%20answer%20is%20False)). 그런 다음 새로운 질문을 제시하면 모델이 예시들을 따라 유사한 사고 과정을 출력합니다. Zero-shot CoT를 시도할 때는 질문 뒤에 **「차근차근 생각해보자」**와 같이 모델에게 사고를 요구하는 문장을 추가하면 됩니다 ([Chain-of-Thought Prompting | Prompt Engineering Guide&amp;lt;!-- --&amp;gt; ](https://www.promptingguide.ai/techniques/cot#:~:text=One%20recent%20idea%20that%20came,see%20how%20the%20model%20performs)) ([Chain-of-Thought Prompting | Prompt Engineering Guide&amp;lt;!-- --&amp;gt; ](https://www.promptingguide.ai/techniques/cot#:~:text=Prompt%3A)). 실제 GPT-3나 GPT-4 API를 사용할 경우 프롬프트에 이러한 문구를 넣어 호출하면 되며, OpenAI 챗GPT 인터페이스에서도 사용자 질문에 이어 “단계적으로 풀이해줘”와 같은 지시를 덧붙여 CoT 유도를 실험해볼 수 있습니다. 모델이 산출한 CoT 답변은 일반적으로 여러 줄에 걸쳐 논리를 전개하다 마지막에 답을 제시하는 형태가 되는데, 이때 **Self-Consistency**를 적용하려면 동일 질문에 대해 **온샘플링**(temperature를 높여 생성)으로 여러 답변을 얻은 후, 그중 가장 많이 나온 최종 답을 선택하면 됩니다. 이러한 다중 샘플링은 OpenAI API의 `n` 매개변수를 활용하거나 HuggingFace `transformers`의 `num_return_sequences` 등을 활용해 구현할 수 있습니다.&lt;br /&gt;
&lt;br /&gt;
- **오픈소스 LLM을 활용한 실습**: 거대 언어 모델 API를 사용하지 않더라도, 공개된 **오픈소스 LLM**으로 CoT를 실습할 수 있습니다 ([Mastering Chain of Thought (CoT) Prompting for Practical AI Tasks](https://huggingface.co/blog/luigi12345/chain-of-thoughts-guide#:~:text=Integrating%20CoT%20with%20Open)). 예를 들어 **Hugging Face Transformers** 라이브러리를 통해 EleutherAI의 GPT-Neo나 GPT-J 모델을 불러와 사용할 수 있습니다. 파이썬 코드에서 `pipeline(&amp;quot;text-generation&amp;quot;, model=&amp;quot;EleutherAI/gpt-neo-1.3B&amp;quot;)`와 같이 생성 모델 파이프라인을 만들고, 여기에 `prompt = &amp;quot;Explain step by step how X...?&amp;quot;` 형태로 단계적 설명을 요구하는 프롬프트를 주어 생성하면 모델이 CoT 스타일로 응답하도록 시도해볼 수 있습니다 ([Mastering Chain of Thought (CoT) Prompting for Practical AI Tasks](https://huggingface.co/blog/luigi12345/chain-of-thoughts-guide#:~:text=CoT%20prompting%20isn%27t%20limited%20to,Face%20can%20handle%20structured%20reasoning)) ([Mastering Chain of Thought (CoT) Prompting for Practical AI Tasks](https://huggingface.co/blog/luigi12345/chain-of-thoughts-guide#:~:text=from%20transformers%20import%20pipeline)). 작은 모델일수록 복잡한 추론에서는 성능이 떨어질 수 있지만, 간단한 문제에 대해서는 CoT의 형식을 흉내내어 **구조화된 출력**을 내는 것을 관찰할 수 있습니다. 예컨대 13억 규모 GPT-Neo 모델에게 *“태양광 패널이 어떻게 전기를 생산하는지 단계별로 설명하라”*고 요청하면, 1) 태양빛이 패널에 닿아 전자를 들뜨게 만들고, 2) 발생한 전류가 어떻게 변환되고, 3) 최종적으로 전력이 공급되는지를 번호付き 단계로 나열하는 답을 생성하는 식입니다 ([Mastering Chain of Thought (CoT) Prompting for Practical AI Tasks](https://huggingface.co/blog/luigi12345/chain-of-thoughts-guide#:~:text=Expected%20Output%3A)). 이처럼 공개 모델로 **작은 CoT 실습**을 해본 뒤, 더 성능이 필요한 경우 공개 API나 대형 모델로 전환하여 같은 프롬프트를 시도해볼 수 있습니다.&lt;br /&gt;
&lt;br /&gt;
- **실습 예제 및 튜토리얼**: CoT 활용을 위한 튜토리얼 자료도 다수 공개되어 있습니다. Hugging Face의 *prompt engineering* 가이드에는 CoT 프롬프트의 작성 예시와 응답 사례들이 포함되어 있어 참고할 수 있으며 ([Chain-of-Thought Prompting | Prompt Engineering Guide&amp;lt;!-- --&amp;gt; ](https://www.promptingguide.ai/techniques/cot#:~:text=Introduced%20in%20Wei%20et%20al,that%20require%20reasoning%20before%20responding)) ([Chain-of-Thought Prompting | Prompt Engineering Guide&amp;lt;!-- --&amp;gt; ](https://www.promptingguide.ai/techniques/cot#:~:text=1,The%20answer%20is%20False)), *Learn Prompting* 같은 사이트에도 CoT 기법을 설명하는 섹션이 있습니다. 예제로, 앞서 언급한 **사과 계산 문제**(“사과를 10개 샀는데 2개를 주고 5개를 더 사고 1개를 먹으면 남은 개수는?”)를 들 수 있는데, CoT 없이 직접 묻는다면 모델이 오답을 내기 쉽지만, *“차근차근 계산해보자.”*라는 문장을 추가하면 모델이 `10 - 2 = 8, 8 + 5 = 13, 13 - 1 = 12` 같은 과정을 거쳐 최종 답 `12개`를 정확히 도출해냅니다. 이 과정을 직접 실습해보면 CoT의 효과를 체감할 수 있습니다. 더 나아가 자신만의 질문 세트를 가지고 CoT 프롬프트를 설계해보는 것도 추천됩니다. 예를 들어 **과학 질문**에 대해 단계적 설명을 유도하거나, **프로그래밍 문제**에 대해 오류 원인을 찾아 고치는 생각의 흐름을 작성하게 하는 등, 다양한 도메인에 CoT를 응용해볼 수 있습니다. 이를 통해 CoT 프롬프트의 **작성 요령**(예시 제시 방법, 문구 선택 등)과 모델의 반응 패턴을 경험적으로 익힐 수 있을 것입니다.&lt;br /&gt;
&lt;br /&gt;
以上의 자료와 가이드를 활용하면, 최신 CoT 연구 아이디어를 직접 실험하고 응용해볼 수 있습니다. 작은 예제로 시작하여 점차 복잡한 문제에 적용하면서, CoT의 강력함과 한계도 파악할 수 있을 것입니다. CoT는 여전히 발전중인 영역이므로, 실습을 통해 얻은 통찰을 바탕으로 프롬프트를 개선하거나 새로운 변형 기법을 고안해보는 것도 의미있는 실험이 될 것입니다.&lt;br /&gt;
&lt;br /&gt;
## 참고 문헌 및 소스&lt;br /&gt;
- Chain-of-Thought 프롬πτ 기법 최초 제안: Wei et al., 2022 ([Language Models Perform Reasoning via Chain of Thought](https://research.google/blog/language-models-perform-reasoning-via-chain-of-thought/#:~:text=In%20%E2%80%9CChain%20of%20Thought%20Prompting,solvable%20with%20standard%20prompting%20methods)) ([Language Models Perform Reasoning via Chain of Thought](https://research.google/blog/language-models-perform-reasoning-via-chain-of-thought/#:~:text=prompting%20can%20improve%20performance%20on,around%20100B))  &lt;br /&gt;
- Zero-Shot CoT (*“Let’s think step by step”*): Kojima et al., 2022 ([[2205.11916] Large Language Models are Zero-Shot Reasoners](https://arxiv.org/abs/2205.11916#:~:text=prompt%20template%2C%20significantly%20outperforms%20zero,hints%20at%20untapped%20and%20understudied)) ([[2205.11916] Large Language Models are Zero-Shot Reasoners](https://arxiv.org/abs/2205.11916#:~:text=SVAMP%29%2C%20symbolic%20reasoning%20,We%20hope%20our))  &lt;br /&gt;
- Self-Consistency 디코딩 전략: Wang et al., 2022 ([[2203.11171] Self-Consistency Improves Chain of Thought Reasoning in Language Models](https://arxiv.org/abs/2203.11171#:~:text=paper%2C%20we%20propose%20a%20new,and%20commonsense%20reasoning%20benchmarks%2C%20including)) ([[2203.11171] Self-Consistency Improves Chain of Thought Reasoning in Language Models](https://arxiv.org/abs/2203.11171#:~:text=correct%20answer,challenge%20%28%2B3.9))  &lt;br /&gt;
- Least-to-Most 문제 분할 프롬πτ: Zhou et al., 2022 ([[2205.10625] Least-to-Most Prompting Enables Complex Reasoning in Large Language Models](https://arxiv.org/abs/2205.10625#:~:text=novel%20prompting%20strategy%2C%20least,benchmark%20SCAN%20in%20any%20split)) ([[2205.10625] Least-to-Most Prompting Enables Complex Reasoning in Large Language Models](https://arxiv.org/abs/2205.10625#:~:text=difficult%20problems%20than%20those%20seen,the%20tasks%20in%20the%20Appendix))  &lt;br /&gt;
- Self-Taught Reasoner (STaR) 알고리즘: Zelikman et al., 2022 ([[2203.14465] STaR: Bootstrapping Reasoning With Reasoning](https://arxiv.org/abs/2203.14465#:~:text=iteratively%20leverage%20a%20small%20number,tuning%20a))  &lt;br /&gt;
- Automatic CoT (Auto-CoT) 생성 기법: Zhang et al., 2022 ([[2210.03493] Automatic Chain of Thought Prompting in Large Language Models](https://ar5iv.org/abs/2210.03493#:~:text=paradigm%20hinges%20on%20the%20hand,3)) ([[2210.03493] Automatic Chain of Thought Prompting in Large Language Models](https://ar5iv.org/abs/2210.03493#:~:text=constructing%20demonstrations,cot))  &lt;br /&gt;
- Tree-of-Thoughts 탐색 프레임워크: Yao et al., 2023 ([[2305.10601] Tree of Thoughts: Deliberate Problem Solving with Large Language Models](https://arxiv.org/abs/2305.10601#:~:text=initial%20decisions%20play%20a%20pivotal,significantly%20enhances%20language%20models%27%20problem)) ([[2305.10601] Tree of Thoughts: Deliberate Problem Solving with Large Language Models](https://arxiv.org/abs/2305.10601#:~:text=experiments%20show%20that%20ToT%20significantly,all%20prompts%3A%20this%20https%20URL))  &lt;br /&gt;
- 그 외 실습 자료: Prompt Engineering Guide (DAIR.AI) ([Chain-of-Thought Prompting | Prompt Engineering Guide&amp;lt;!-- --&amp;gt; ](https://www.promptingguide.ai/techniques/cot#:~:text=Introduced%20in%20Wei%20et%20al,that%20require%20reasoning%20before%20responding)) ([Chain-of-Thought Prompting | Prompt Engineering Guide&amp;lt;!-- --&amp;gt; ](https://www.promptingguide.ai/techniques/cot#:~:text=One%20recent%20idea%20that%20came,see%20how%20the%20model%20performs)), HuggingFace CoT Leaderboard 블로그 ([Introducing the Open Chain of Thought Leaderboard](https://huggingface.co/blog/leaderboard-cot#:~:text=Unlike%20most%20performance%20based%20leaderboards%2C,thought%20prompting)) ([Introducing the Open Chain of Thought Leaderboard](https://huggingface.co/blog/leaderboard-cot#:~:text=Chain,thought%20traces%20may)), CoT-Hub 벤치마크 ([GitHub - FranxYao/chain-of-thought-hub: Benchmarking large language models' complex reasoning ability with chain-of-thought prompting](https://github.com/FranxYao/chain-of-thought-hub#:~:text=)) 등.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/markdown&amp;gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
		
	</entry>
	<entry>
		<id>http://samediff.kr/wiki/index.php?title=Cot%EC%97%B0%EA%B5%AC%EB%8F%99%ED%96%A5&amp;diff=16223</id>
		<title>Cot연구동향</title>
		<link rel="alternate" type="text/html" href="http://samediff.kr/wiki/index.php?title=Cot%EC%97%B0%EA%B5%AC%EB%8F%99%ED%96%A5&amp;diff=16223"/>
		<updated>2025-02-28T15:34:03Z</updated>

		<summary type="html">&lt;p&gt;Admin: 새 문서: chatgpt. 20250301. &amp;lt;markdown&amp;gt;   좋아요! 최근 연구를 중심으로 Chain of Thought (CoT)와 관련된 논문, 이론, 그리고 실습 자료 및 공개된 코드를 조사하...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;chatgpt. 20250301.&lt;br /&gt;
&amp;lt;markdown&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
좋아요! 최근 연구를 중심으로 Chain of Thought (CoT)와 관련된 논문, 이론, 그리고 실습 자료 및 공개된 코드를 조사하여 정리해드리겠습니다.&lt;br /&gt;
&lt;br /&gt;
결과는 보고서 형태로 제공하며, 주요 내용은 다음과 같습니다:&lt;br /&gt;
- 최신 논문 목록 및 요약&lt;br /&gt;
- Chain of Thought 개념과 이론적 배경&lt;br /&gt;
- 인공지능 분야에서의 CoT 연구와 응용 사례&lt;br /&gt;
- 실습 가능한 오픈소스 코드 및 리소스 정리&lt;br /&gt;
- 실전 적용을 위한 가이드 및 예제 코드 설명&lt;br /&gt;
&lt;br /&gt;
연구가 완료되면 공유해드리겠습니다!&lt;br /&gt;
&lt;br /&gt;
# Chain of Thought (CoT) 최신 연구 조사 보고서&lt;br /&gt;
&lt;br /&gt;
## 개요 및 이론적 배경&lt;br /&gt;
**Chain of Thought (CoT)**은 복잡한 문제를 풀 때 **사고의 연쇄**, 즉 중간 추론 단계를 언어 형태로 생성하도록 유도하는 기법입니다 ([Language Models Perform Reasoning via Chain of Thought](https://research.google/blog/language-models-perform-reasoning-via-chain-of-thought/#:~:text=In%20%E2%80%9CChain%20of%20Thought%20Prompting,solvable%20with%20standard%20prompting%20methods)). 기존의 표준 프롬프트에서는 모델이 바로 정답만 출력하지만, CoT 프롬프트를 사용하면 문제를 단계별로 분해하여 해결 과정을 서술한 뒤 최종 답을 도출합니다 ([Language Models Perform Reasoning via Chain of Thought](https://research.google/blog/language-models-perform-reasoning-via-chain-of-thought/#:~:text=With%20standard%20prompting%20,of%20thought%20via%20prompting%20only)). 이러한 “생각의 연쇄”를 통해 모델이 인간처럼 단계적으로 사고하도록 유도하며, 특히 산술, 상식 추론 등의 **다단계 추론 문제**에서 성능을 크게 향상시킬 수 있음이 나타났습니다 ([Language Models Perform Reasoning via Chain of Thought](https://research.google/blog/language-models-perform-reasoning-via-chain-of-thought/#:~:text=In%20%E2%80%9CChain%20of%20Thought%20Prompting,solvable%20with%20standard%20prompting%20methods)) ([Language Models Perform Reasoning via Chain of Thought](https://research.google/blog/language-models-perform-reasoning-via-chain-of-thought/#:~:text=prompting%20can%20improve%20performance%20on,around%20100B)). 예를 들어, 단순 질문에 바로 답하게 하면 틀렸던 산술 문제도 프롬프트에 *“차근차근 생각해보자”*라는 문장을 추가하여 단계별 풀이를 유도하면 정답을 도출할 수 있습니다 ([Chain-of-Thought Prompting | Prompt Engineering Guide&amp;lt;!-- --&amp;gt; ](https://www.promptingguide.ai/techniques/cot#:~:text=Output%3A)). 이러한 효과는 충분히 **대규모**(약 100억~1000억 이상) 파라미터를 가진 언어 모델에서 두드러지며, CoT로 유도한 **추론 과정** 자체는 사람이 언어로 풀 수 있는 어떤 문제에도 적용 가능하다고 보고되었습니다 ([Language Models Perform Reasoning via Chain of Thought](https://research.google/blog/language-models-perform-reasoning-via-chain-of-thought/#:~:text=Chain%20of%20thought%20reasoning%20allows,around%20100B)).&lt;br /&gt;
&lt;br /&gt;
 ([Language Models Perform Reasoning via Chain of Thought](https://research.google/blog/language-models-perform-reasoning-via-chain-of-thought/#:~:text=With%20standard%20prompting%20,of%20thought%20via%20prompting%20only)) ([Language Models Perform Reasoning via Chain of Thought](https://research.google/blog/language-models-perform-reasoning-via-chain-of-thought/)) *표준 프롬프트(좌) vs Chain-of-Thought 프롬프트(우) 비교 예시. CoT 프롬프트에서는 모델이 중간 추론 단계를 거쳐 최종 답을 산출한다.*&lt;br /&gt;
&lt;br /&gt;
CoT 개념의 이론적 배경에는 **스크래치패드(scratchpad)** 학습과 **정당화(rationale)** 연구가 있습니다. 과거에는 모델이 중간 계산 과정을 출력하도록 하려면 대량의 추론 과정을 담은 데이터로 **파인튜닝**해야 했습니다 ([Language Models Perform Reasoning via Chain of Thought](https://research.google/blog/language-models-perform-reasoning-via-chain-of-thought/#:~:text=intuitive%20thought%20process%20when%20working,modifying%20the%20language%20model%E2%80%99s%20weights)). 예를 들어 Nye 등(2021)은 **스크래치패드**를 통해 모델이 계산 과정을 메모리에 적으며 복잡한 문제를 풀도록 훈련했고, Rajani 등(2019)이나 Shwartz 등(2020)은 **상식 추론** 질문에 대한 인간의 설명(reasoning)을 데이터로 수집하여 모델이 **정답 근거**를 생성하도록 시도했습니다. 이러한 선행 연구들은 모델이 **중간 단계**를 거쳐 답하도록 하면 성능이 좋아짐을 보였지만, 일일이 많은 추론 데이터를 마련해야 하는 한계가 있었습니다. **CoT 프롬프트**의 등장은 이러한 중간 추론을 **몇 가지 예시만으로도** 유도할 수 있음을 보인 것으로, 추가 학습 없이 프롬프트 설계만으로도 효과를 얻을 수 있다는 점에서 큰 의의가 있습니다 ([Language Models Perform Reasoning via Chain of Thought](https://research.google/blog/language-models-perform-reasoning-via-chain-of-thought/#:~:text=intuitive%20thought%20process%20when%20working,modifying%20the%20language%20model%E2%80%99s%20weights)). 또한 최근 Merrill &amp;amp; Sabharwal(2023) 등의 이론 연구에서는, 언어 모델에 CoT 방식의 추가적인 출력 단계를 허용하면 **변환기의 표현력**이 높아져 단순 출력만으로는 풀지 못하는 더 복잡한 계산도 수행 가능함을 보이는 등, CoT의 잠재력에 대한 **이론적 분석**도 진행되고 있습니다.&lt;br /&gt;
&lt;br /&gt;
## 최근 5년간 CoT 관련 주요 연구 동향&lt;br /&gt;
최근 5년 이내 CoT와 관련하여 많은 의미있는 연구들이 발표되었습니다. 주요 논문과 그 기여를 정리하면 다음과 같습니다:&lt;br /&gt;
&lt;br /&gt;
- **Wei et al. (2022), *“Chain-of-Thought Prompting Elicits Reasoning in LLMs”*** – 최초로 CoT 프롬πτ 기법을 제안한 연구로, 간단한 **Few-shot** 프롬프트만으로도 언어 모델에게 단계적 사고를 유도할 수 있음을 보여주었습니다. 이 방법을 통해 1000억 규모 이상의 대형 모델에서 산술, 상식, 논리 추론 문제 성능이 크게 향상되었으며 ([Language Models Perform Reasoning via Chain of Thought](https://research.google/blog/language-models-perform-reasoning-via-chain-of-thought/#:~:text=In%20%E2%80%9CChain%20of%20Thought%20Prompting,solvable%20with%20standard%20prompting%20methods)), 특히 5400억 규모 PaLM 모델에 CoT를 적용하여 GSM8K 수학 문제에서 기존 SOTA를 능가하는 58% 정확도를 달성했습니다 ([Language Models Perform Reasoning via Chain of Thought](https://research.google/blog/language-models-perform-reasoning-via-chain-of-thought/#:~:text=For%20these%20two%20benchmarks%2C%20using,prompting%20for%20large%20model%20sizes)) ([Language Models Perform Reasoning via Chain of Thought](https://research.google/blog/language-models-perform-reasoning-via-chain-of-thought/#:~:text=On%20the%20GSM8K%20dataset%20of,set%20and%20then%20ranking%20potential)). 또한 CoT의 효과가 **모델 크기에 따라 발생하는 emergent behavior**임을 관찰하여, 약 100억~백억 단위 이상의 모델에서 비로소 CoT가 유의미한 성능 향상을 가져온다는 사실을 보고했습니다 ([Language Models Perform Reasoning via Chain of Thought](https://research.google/blog/language-models-perform-reasoning-via-chain-of-thought/#:~:text=prompting%20can%20improve%20performance%20on,around%20100B)).&lt;br /&gt;
&lt;br /&gt;
- **Kojima et al. (2022), *“Large Language Models are Zero-Shot Reasoners”*** – CoT 프롬프트를 **Zero-shot**으로도 활용할 수 있음을 보여준 연구입니다. 예시를 전혀 주지 않고도 질문 뒤에 *“Let’s think step by step.”(차근차근 생각해보자)*라는 한 문장만 덧붙이는 간단한 방법으로, 모델이 스스로 단계별 풀이를 생성하도록 유도할 수 있음을 발견했습니다 ([[2205.11916] Large Language Models are Zero-Shot Reasoners](https://arxiv.org/abs/2205.11916#:~:text=the%20standard%20scaling%20laws%20for,to)) ([[2205.11916] Large Language Models are Zero-Shot Reasoners](https://arxiv.org/abs/2205.11916#:~:text=prompt%20template%2C%20significantly%20outperforms%20zero,hints%20at%20untapped%20and%20understudied)). 이렇게 생성된 **Zero-shot CoT**는 기존에 예시 없이 바로 답변하던 경우 대비 다양한 추론 벤치마크에서 성능을 크게 향상시켰습니다. 예를 들어 MultiArith 산술 문제는 정확도가 17.7%에서 78.7%로, GSM8K는 10.4%에서 40.7%로 크게 상승했습니다 ([[2205.11916] Large Language Models are Zero-Shot Reasoners](https://arxiv.org/abs/2205.11916#:~:text=SVAMP%29%2C%20symbolic%20reasoning%20,We%20hope%20our)). 이는 단 하나의 보편적인 프롬프트로 **다양한 과제**에서 큰 개선을 이뤄낸 사례로, LLM에 내재된 **잠재적 추론 능력**을 간단한 문구로 끌어낸 점이 주목받았습니다.&lt;br /&gt;
&lt;br /&gt;
- **Wang et al. (2022), *“Self-Consistency Improves CoT Reasoning in LMs”*** – CoT의 **디코딩 전략**을 개선한 연구로, 정답의 신뢰도를 높이는 **Self-Consistency(자가 일관성)** 기법을 제안했습니다. 기존에는 CoT 프롬프트로 하나의 추론 경로만 생성했다면, Self-Consistency에서는 같은 질문에 대해 **여러 가지 서로 다른 추론 과정**을 샘플링하여 얻은 뒤, 그 중 가장 일관된 최종 답을 다수결 등으로 선택합니다 ([[2203.11171] Self-Consistency Improves Chain of Thought Reasoning in Language Models](https://arxiv.org/abs/2203.11171#:~:text=paper%2C%20we%20propose%20a%20new,and%20commonsense%20reasoning%20benchmarks%2C%20including)). 직관적으로, 복잡한 문제는 생각하는 경로는 다를 수 있어도 정답은 동일하다는 점을 활용한 것입니다 ([[2203.11171] Self-Consistency Improves Chain of Thought Reasoning in Language Models](https://arxiv.org/abs/2203.11171#:~:text=diverse%20set%20of%20reasoning%20paths,challenge%20%28%2B3.9)). 실험 결과 Self-Consistency를 적용하면 GSM8K에서 +17.9%, SVAMP에서 +11.0%, AQuA에서 +12.2% 등 CoT 성능이 크게 향상되었고 ([[2203.11171] Self-Consistency Improves Chain of Thought Reasoning in Language Models](https://arxiv.org/abs/2203.11171#:~:text=correct%20answer,challenge%20%28%2B3.9)), Greedy decoding보다 **안정적인 정답률**을 확보할 수 있음을 보여주었습니다.&lt;br /&gt;
&lt;br /&gt;
- **Zhou et al. (2022), *“Least-to-Most Prompting”*** – CoT의 한계를 보완하기 위해 **문제 분할(decomposition)** 아이디어를 접목한 프롬프트 전략입니다. CoT는 프롬프트에 제시한 예시보다 더 어려운 문제가 주어지면 일반화에 실패하는 경향이 있는데 ([[2205.10625] Least-to-Most Prompting Enables Complex Reasoning in Large Language Models](https://arxiv.org/abs/2205.10625#:~:text=%3E%20Abstract%3AChain,manipulation%2C%20compositional%20generalization%2C%20and%20math)), **Least-to-Most Prompting (LtM)**은 어려운 문제를 더 쉬운 **하위 문제들**로 나누어 순차적으로 해결하도록 프롬프트를 구성함으로써 이 문제를 해결합니다 ([[2205.10625] Least-to-Most Prompting Enables Complex Reasoning in Large Language Models](https://arxiv.org/abs/2205.10625#:~:text=on%20tasks%20which%20requires%20solving,A%20notable%20finding%20is%20that)). 먼저 간단한 부분문제부터 풀고 그 해답을 이용해 점진적으로 복잡한 전체 문제를 풀어나가는 방식으로, **쉬운 것에서 어려운 것**으로 일반화하는 능력을 향상시켰습니다 ([[2205.10625] Least-to-Most Prompting Enables Complex Reasoning in Large Language Models](https://arxiv.org/abs/2205.10625#:~:text=novel%20prompting%20strategy%2C%20least,benchmark%20SCAN%20in%20any%20split)). 그 결과 GPT-3 모델을 활용한 SCAN 벤치마크 실험에서, LtM 프롬프트는 불과 14개의 예시만으로도 99% 이상의 정확도를 달성하여, CoT의 16% 대비 월등한 성능을 보였습니다 ([[2205.10625] Least-to-Most Prompting Enables Complex Reasoning in Large Language Models](https://arxiv.org/abs/2205.10625#:~:text=difficult%20problems%20than%20those%20seen,the%20tasks%20in%20the%20Appendix)). 이처럼 LtM은 단계별 문제 분할을 통해 CoT의 **일반화 범위**를 넓힌 사례입니다.&lt;br /&gt;
&lt;br /&gt;
- **Zelikman et al. (2022), *“STaR: Self-Taught Reasoner”*** – **모델 스스로 추론 데이터를 생성하여 학습**하도록 하는 새로운 방법론입니다. Few-shot CoT 예시 몇 개로 시작하여 모델이 많은 질문들에 대한 **추론 과정(rationale)**을 생성하게 한 뒤, **정답을 맞춘** 사례들의 추론만 모아 다시 모델을 파인튜닝하는 **부트스트랩 루프**를 제안했습니다 ([[2203.14465] STaR: Bootstrapping Reasoning With Reasoning](https://arxiv.org/abs/2203.14465#:~:text=iteratively%20leverage%20a%20small%20number,tuning%20a)). 모델이 틀린 답을 낸 경우 정답을 알려주고 다시 reasoning을 생성하게 하는 식으로 반복하여, 점차 더 복잡한 문제도 풀 수 있도록 모델을 향상시킵니다 ([[2203.14465] STaR: Bootstrapping Reasoning With Reasoning](https://arxiv.org/abs/2203.14465#:~:text=iteratively%20leverage%20a%20small%20number,tuning%20a)). 이렇게 **모델이 생성한 데이터로 다시 모델을 학습**시키는 자훈련(self-training) 방식으로, STaR 기법은 별도 정답만 있는 큰 데이터셋으로부터 합리적인 추론 과정을 **부트스트랩**하는 데 성공했습니다. 그 결과 CommonsenseQA 등에서 30배 큰 최첨단 모델과 비슷한 성능을 달성하여, **자기 추론 학습**의 가능성을 보여주었습니다 ([[2203.14465] STaR: Bootstrapping Reasoning With Reasoning](https://arxiv.org/abs/2203.14465#:~:text=rationale%20examples%3B%20if%20the%20generated,from%20its%20own%20generated%20reasoning)).&lt;br /&gt;
&lt;br /&gt;
- **Zhang et al. (2022), *“Automatic Chain-of-Thought (Auto-CoT)”*** – CoT **데모 예시를 자동으로 생성**해주는 프롬프트 구성 기법입니다. 앞서 Wei 등의 Manual-CoT는 사람이 직접 시연 예제를 만들었는데, Auto-CoT는 LLM 자체에 *“Let’s think step by step”*를 사용한 Zero-shot CoT로 여러 문제의 풀이는 만들어내고, 그중 **다양하고 대표적인** 예시들을 선별하여 데모로 사용하는 방식을 취합니다 ([[2210.03493] Automatic Chain of Thought Prompting in Large Language Models](https://ar5iv.org/abs/2210.03493#:~:text=paradigm%20hinges%20on%20the%20hand,3)) ([[2210.03493] Automatic Chain of Thought Prompting in Large Language Models](https://ar5iv.org/abs/2210.03493#:~:text=by%20one,cot)). 구체적으로, **질문 클러스터링**을 통해 유형을 다양화하고 각 군집 대표 질문에 대한 CoT 풀이를 생성한 후, 길이 등의 단순 기준으로 품질이 괜찮은 추론을 뽑아 예시 세트로 삼습니다 ([Chain-of-Thought Prompting | Prompt Engineering Guide&amp;lt;!-- --&amp;gt; ](https://www.promptingguide.ai/techniques/cot#:~:text=lead%20to%20suboptimal%20solutions,chains%20to%20construct%20the%20demonstrations)) ([Chain-of-Thought Prompting | Prompt Engineering Guide&amp;lt;!-- --&amp;gt; ](https://www.promptingguide.ai/techniques/cot#:~:text=,CoT%20with%20simple%20heuristics)). 이러한 자동 구성한 Few-shot 프롬프트를 GPT-3 등에 적용한 결과, 사람 손으로 만든 CoT 프롬프트에 필적하거나 이를 능가하는 성능을 10개 벤치마크에서 달성했습니다 ([[2210.03493] Automatic Chain of Thought Prompting in Large Language Models](https://ar5iv.org/abs/2210.03493#:~:text=constructing%20demonstrations,cot)). Auto-CoT는 향후 프롬프트 엔지니어링의 수작업을 줄이는 방향의 연구로 주목받았습니다.&lt;br /&gt;
&lt;br /&gt;
- **Yao et al. (2023), *“Tree-of-Thoughts (ToT)”*** – CoT 개념을 확장하여 **브랜치 탐색**을 가능케 한 추론 기법입니다. 일반 CoT는 하나의 연쇄적 생각 경로만 따라가지만, **ToT**는 마치 나무를 가지치기하듯이 **여러 가능한 생각의 경로**를 분기 탐색하면서 최선의 해결책을 찾습니다 ([[2305.10601] Tree of Thoughts: Deliberate Problem Solving with Large Language Models](https://arxiv.org/abs/2305.10601#:~:text=initial%20decisions%20play%20a%20pivotal,significantly%20enhances%20language%20models%27%20problem)). 언어 모델의 출력 단위를 “생각(thought)” 단위로 일반화하고, 각 단계에서 다음 진행을 여러 대안으로 펼쳐본 뒤 **평가/백트래킹**을 통해 최적 경로를 추린다는 점에서, ToT는 탐색적 사고(exploration)를 도입한 체계적인 프롬프트 프레임워크입니다 ([[2305.10601] Tree of Thoughts: Deliberate Problem Solving with Large Language Models](https://arxiv.org/abs/2305.10601#:~:text=which%20generalizes%20over%20the%20popular,instance%2C%20in%20Game%20of%2024)) ([[2305.10601] Tree of Thoughts: Deliberate Problem Solving with Large Language Models](https://arxiv.org/abs/2305.10601#:~:text=that%20serve%20as%20intermediate%20steps,prompts%3A%20%2019%20this%20https)). 실험적으로도 ToT는 **전략적 탐색**이 필요한 문제들에서 큰 성공을 거두었는데, 예를 들어 숫자 24 만들기 게임(Game of 24)에서 GPT-4가 CoT로는 4% 정답률에 그친 반면, ToT 방법을 적용하자 **74%**의 높은 성공률을 보였습니다 ([[2305.10601] Tree of Thoughts: Deliberate Problem Solving with Large Language Models](https://arxiv.org/abs/2305.10601#:~:text=experiments%20show%20that%20ToT%20significantly,all%20prompts%3A%20this%20https%20URL)). 이 연구는 CoT의 한계를 뛰어넘어 **탐색적 Chain-of-Thought**이라는 새로운 방향을 제시한 것으로 평가됩니다.&lt;br /&gt;
&lt;br /&gt;
이 외에도 CoT의 효과를 이끌어내기 위한 다양한 변형 연구들이 진행되고 있습니다. 예를 들어, CoT와 **외부 도구 사용**을 결합한 **ReAct** 방식(Yao 등, 2022)은 모델이 “생각(추론)”과 “행동(도구 사용)” 단계를 번갈아 수행함으로써 복잡한 문제를 해결하도록 했습니다. 또 다른 방향으로, **Reasoning distillation** 연구들은 거대 모델이 생성한 CoT를 smaller 모델이 학습하여 추론 능력을 전이받도록 시도합니다. 전반적으로, **Chain-of-Thought**은 2022년 이후 급속히 발전하는 거대언어모델 분야에서 **복잡한 추론 문제를 해결하는 핵심 기법**으로 자리잡았으며, 다양한 응용 및 변형이 지속적으로 나오고 있습니다.&lt;br /&gt;
&lt;br /&gt;
## CoT의 활용 사례 및 응용 분야&lt;br /&gt;
CoT의 도입 이후 **언어 모델의 추론 능력**에 큰 진전이 나타나면서, 여러 분야의 문제 해결에 CoT가 활용되고 있습니다. 대표적으로 **수학 단어 문제** 풀이에서 CoT는 필수적인 기술로 자리잡았습니다. 모델이 여러 단계의 계산이나 논리를 거쳐야 하는 GSM8K 같은 산수 문제에서, CoT 프롬프트를 사용하면 단계별로 풀어서 정답률을 크게 높일 수 있습니다 ([[2205.11916] Large Language Models are Zero-Shot Reasoners](https://arxiv.org/abs/2205.11916#:~:text=prompt%20template%2C%20significantly%20outperforms%20zero,hints%20at%20untapped%20and%20understudied)). **상식 추론**(commonsense reasoning) 분야에서도 CoT가 활용되어, 사람의 사고 과정을 흉내내 설명을 만들어가며 질문에 답하도록 합니다. 예컨대 **StrategyQA**나 **CommonsenseQA** 같은 지식+추론 문제가 이에 해당하며, CoT를 쓰면 모델이 바로 답을 떠올리지 못하는 경우에도 관련 상식을 끌어모아 논리적 결론을 도출할 수 있습니다. **논리 퍼즐**이나 **언어 추론**(logical reasoning)에도 CoT가 쓰입니다. Kojima 등의 연구에서 보여준 동전 뒤집기, 날짜 계산, 개체 추적 등 문제들은 한두 번의 토큰 예측으로 풀기 어려웠지만, CoT로 일련의 추론 단계를 거치자 성능이 크게 향상되었습니다 ([[2205.11916] Large Language Models are Zero-Shot Reasoners](https://arxiv.org/abs/2205.11916#:~:text=prompt%20template%2C%20significantly%20outperforms%20zero,hints%20at%20untapped%20and%20understudied)). 이처럼 CoT는 **복합적인 추론 시나리오** 전반에 적용되어, 모델의 문제 해결 과정을 사람이 이해할 수 있는 형태로 만들어준다는 장점도 있습니다 (출력된 체인-of-thought 자체가 일종의 **설명**이 되므로, 투명성과 설명가능성이 향상됨).&lt;br /&gt;
&lt;br /&gt;
또한 CoT는 **복잡한 질문에 대한 AI 어시스턴트의 응답 품질**을 높이기 위해 실무적으로도 활용됩니다. 일례로 거대 챗봇 모델(예: ChatGPT, GPT-4 등)은 겉으로 드러나진 않아도 내부적으로 복잡한 질문에 답변하기 전에 단계별로 사고하는 경향이 있는데 ([Introducing the Open Chain of Thought Leaderboard](https://huggingface.co/blog/leaderboard-cot#:~:text=may%20improve%20explainability%20and%20accuracy,users%20when%20choosing%20a%20model)), 이는 CoT 스타일의 추론이 모델에 내재화되어있음을 시사합니다. CoT 방식은 다양한 **LLM 기반 에이전트**에게도 도입되어, 예를 들어 **LangChain** 같은 프레임워크를 통해 프롬프트에 체인-of-thought를 추가함으로써 모델이 더 신뢰도 높은 답을 찾도록 돕습니다 ([Introducing the Open Chain of Thought Leaderboard](https://huggingface.co/blog/leaderboard-cot#:~:text=Chain,thought%20traces%20may)). 실제 응용 면에서, CoT는 **코드 디버깅**이나 **복잡한 글 구성** 같은 창의적 작업에도 활용됩니다. 모델이 버그 원인을 단계적으로 추론하고 수정 방향을 제시하게 하거나 ([Mastering Chain of Thought (CoT) Prompting for Practical AI Tasks](https://huggingface.co/blog/luigi12345/chain-of-thoughts-guide#:~:text=,step%20problems%20in%20mathematics)) ([Mastering Chain of Thought (CoT) Prompting for Practical AI Tasks](https://huggingface.co/blog/luigi12345/chain-of-thoughts-guide#:~:text=Prompt%3A%20,3)), 긴 문장을 요약하거나 아이디어를 구조화할 때도 CoT로 단계적인 출력을 유도하면 보다 일관된 결과를 얻을 수 있다는 보고가 있습니다 ([Mastering Chain of Thought (CoT) Prompting for Practical AI Tasks](https://huggingface.co/blog/luigi12345/chain-of-thoughts-guide#:~:text=Chain%20of%20Thought%20prompting%20is,was%20derived%E2%80%94essential%20for%20tasks%20like)) ([Mastering Chain of Thought (CoT) Prompting for Practical AI Tasks](https://huggingface.co/blog/luigi12345/chain-of-thoughts-guide#:~:text=Traditional%20AI%20outputs%20often%20feel,For%20example)). 나아가, **계획 및 실행**(planning &amp;amp; acting) 영역에서는 CoT와 외부 도구 사용이 결합된 **퍼렉션(ReAct)**, **체인오브헌(Plan-and-Solve)** 등의 에이전트가 복잡한 과제를 해결하는 데에 CoT를 필수 구성요소로 활용하고 있습니다.&lt;br /&gt;
&lt;br /&gt;
정리하면, CoT는 **수학/논리 문제 해결, 상식 질의응답, 복잡한 추론 대화, 코드 분석** 등 **다양한 AI 응용 분야**에서 성능을 높이는 데 활용되고 있습니다. CoT 사용 시 출력되는 **추론 경로(trace)**는 사람에게 결과에 이르는 논리를 제공하여 신뢰성을 높이고, 모델에게는 한층 난도 높은 작업을 풀 수 있는 **사고의 도구**를 제공한다고 볼 수 있습니다. 이러한 이유로 CoT는 현재 LLM 응용의 **디폴트 전략**으로 자리잡고 있으며, 모델의 추론력을 끌어올리기 위한 연구가 활발히 계속되는 추세입니다.&lt;br /&gt;
&lt;br /&gt;
## CoT 실습 자료 및 오픈소스 활용 가이드&lt;br /&gt;
CoT 개념과 기법은 공개된 여러 자료와 코드를 통해 직접 실습해볼 수 있습니다. 아래에는 CoT를 구현하거나 실험하기 위한 주요 오픈소스 리소스와 활용 방법을 소개합니다.&lt;br /&gt;
&lt;br /&gt;
- **공개 구현 코드 및 프로젝트**: 많은 CoT 관련 연구들이 공식 구현을 깃허브에 공개하고 있습니다. 예를 들어, Kojima 등(2022)의 *Zero-shot CoT* 공식 구현이 GitHub에 공개되어 있어 해당 코드를 통해 *“Let’s think step by step”* 프롬프트 실험을 해볼 수 있습니다 ([[2205.11916] Large Language Models are Zero-Shot Reasoners](https://arxiv.org/abs/2205.11916#:~:text=LLMs%20before%20crafting%20finetuning%20datasets,shot%20exemplars)). 또한 Amazon 연구팀이 공개한 *Auto-CoT* 구현코드 ([[2210.03493] Automatic Chain of Thought Prompting in Large Language Models](https://ar5iv.org/abs/2210.03493#:~:text=constructing%20demonstrations,cot))를 사용하면, 주어진 문제세트에 대해 자동으로 CoT 예시 프롬프트를 생성하고 평가해볼 수 있습니다. Yao 등(2023)의 *Tree-of-Thoughts* 역시 공식 저장소에서 코드와 프롬프트 예시를 제공하고 있어, 이를 참고하여 모델의 단계별 **분기 탐색**을 구현해볼 수 있습니다 ([[2305.10601] Tree of Thoughts: Deliberate Problem Solving with Large Language Models](https://arxiv.org/abs/2305.10601#:~:text=experiments%20show%20that%20ToT%20significantly,all%20prompts%3A%20this%20https%20URL)). 이처럼 주요 CoT 기법들의 오픈소스 코드를 활용하면 논문 수준의 실험을 재현하거나 자신의 데이터에 적용하여 **재현 실험**을 할 수 있습니다.&lt;br /&gt;
&lt;br /&gt;
- **체인 오브 쏘트 허브 및 리더보드**: 최근 Hugging Face에서는 **Open Chain-of-Thought Leaderboard**를 운영하여 여러 공개 LLM들의 CoT 능력을 비교 평가하고 있습니다 ([Introducing the Open Chain of Thought Leaderboard](https://huggingface.co/blog/leaderboard-cot#:~:text=Unlike%20most%20performance%20based%20leaderboards%2C,thought%20prompting)). 이 leaderboard는 모델이 CoT 프롬프트를 활용했을 때와 안 했을 때의 **성능 차이(accuracy gain)**를 측정함으로써, CoT의 효과를 정량화합니다 ([Introducing the Open Chain of Thought Leaderboard](https://huggingface.co/blog/leaderboard-cot#:~:text=Unlike%20most%20performance%20based%20leaderboards%2C,thought%20prompting)). 이를 통해 사용자는 다양한 모델 (예: GPT-3, Llama2, PaLM 등)의 CoT 향상 정도를 확인하고 자신의 응용에 적합한 모델을 선택하는 데 참고할 수 있습니다. 또한 **chain-of-thought-hub** ([GitHub - FranxYao/chain-of-thought-hub: Benchmarking large language models' complex reasoning ability with chain-of-thought prompting](https://github.com/FranxYao/chain-of-thought-hub#:~:text=)) 같은 오픈소스 프로젝트에서는 여러 복잡한 추론 벤치마크에 대해 LLM들의 CoT 성능을 벤치마킹할 수 있는 **주피터 노트북**과 평가 스크립트를 제공합니다. 이를 활용하면 코랩(Colab) 등에서 손쉽게 **CoT 프롬프트 실험**을 수행해보고 결과를 확인할 수 있습니다.&lt;br /&gt;
&lt;br /&gt;
- **프롬프트 설계와 실행 가이드**: CoT를 실습하려면 우선 **프롬프트 엔지니어링**이 중요합니다. Few-shot CoT의 경우, 먼저 풀고자 하는 문제 유형에 맞는 예제 몇 개를 만들고 각 예제에 대해 질문과 단계별 해설, 그리고 최종 답 형식으로 프롬프트를 구성합니다 ([Chain-of-Thought Prompting | Prompt Engineering Guide&amp;lt;!-- --&amp;gt; ](https://www.promptingguide.ai/techniques/cot#:~:text=Introduced%20in%20Wei%20et%20al,that%20require%20reasoning%20before%20responding)) ([Chain-of-Thought Prompting | Prompt Engineering Guide&amp;lt;!-- --&amp;gt; ](https://www.promptingguide.ai/techniques/cot#:~:text=1,The%20answer%20is%20False)). 그런 다음 새로운 질문을 제시하면 모델이 예시들을 따라 유사한 사고 과정을 출력합니다. Zero-shot CoT를 시도할 때는 질문 뒤에 **「차근차근 생각해보자」**와 같이 모델에게 사고를 요구하는 문장을 추가하면 됩니다 ([Chain-of-Thought Prompting | Prompt Engineering Guide&amp;lt;!-- --&amp;gt; ](https://www.promptingguide.ai/techniques/cot#:~:text=One%20recent%20idea%20that%20came,see%20how%20the%20model%20performs)) ([Chain-of-Thought Prompting | Prompt Engineering Guide&amp;lt;!-- --&amp;gt; ](https://www.promptingguide.ai/techniques/cot#:~:text=Prompt%3A)). 실제 GPT-3나 GPT-4 API를 사용할 경우 프롬프트에 이러한 문구를 넣어 호출하면 되며, OpenAI 챗GPT 인터페이스에서도 사용자 질문에 이어 “단계적으로 풀이해줘”와 같은 지시를 덧붙여 CoT 유도를 실험해볼 수 있습니다. 모델이 산출한 CoT 답변은 일반적으로 여러 줄에 걸쳐 논리를 전개하다 마지막에 답을 제시하는 형태가 되는데, 이때 **Self-Consistency**를 적용하려면 동일 질문에 대해 **온샘플링**(temperature를 높여 생성)으로 여러 답변을 얻은 후, 그중 가장 많이 나온 최종 답을 선택하면 됩니다. 이러한 다중 샘플링은 OpenAI API의 `n` 매개변수를 활용하거나 HuggingFace `transformers`의 `num_return_sequences` 등을 활용해 구현할 수 있습니다.&lt;br /&gt;
&lt;br /&gt;
- **오픈소스 LLM을 활용한 실습**: 거대 언어 모델 API를 사용하지 않더라도, 공개된 **오픈소스 LLM**으로 CoT를 실습할 수 있습니다 ([Mastering Chain of Thought (CoT) Prompting for Practical AI Tasks](https://huggingface.co/blog/luigi12345/chain-of-thoughts-guide#:~:text=Integrating%20CoT%20with%20Open)). 예를 들어 **Hugging Face Transformers** 라이브러리를 통해 EleutherAI의 GPT-Neo나 GPT-J 모델을 불러와 사용할 수 있습니다. 파이썬 코드에서 `pipeline(&amp;quot;text-generation&amp;quot;, model=&amp;quot;EleutherAI/gpt-neo-1.3B&amp;quot;)`와 같이 생성 모델 파이프라인을 만들고, 여기에 `prompt = &amp;quot;Explain step by step how X...?&amp;quot;` 형태로 단계적 설명을 요구하는 프롬프트를 주어 생성하면 모델이 CoT 스타일로 응답하도록 시도해볼 수 있습니다 ([Mastering Chain of Thought (CoT) Prompting for Practical AI Tasks](https://huggingface.co/blog/luigi12345/chain-of-thoughts-guide#:~:text=CoT%20prompting%20isn%27t%20limited%20to,Face%20can%20handle%20structured%20reasoning)) ([Mastering Chain of Thought (CoT) Prompting for Practical AI Tasks](https://huggingface.co/blog/luigi12345/chain-of-thoughts-guide#:~:text=from%20transformers%20import%20pipeline)). 작은 모델일수록 복잡한 추론에서는 성능이 떨어질 수 있지만, 간단한 문제에 대해서는 CoT의 형식을 흉내내어 **구조화된 출력**을 내는 것을 관찰할 수 있습니다. 예컨대 13억 규모 GPT-Neo 모델에게 *“태양광 패널이 어떻게 전기를 생산하는지 단계별로 설명하라”*고 요청하면, 1) 태양빛이 패널에 닿아 전자를 들뜨게 만들고, 2) 발생한 전류가 어떻게 변환되고, 3) 최종적으로 전력이 공급되는지를 번호付き 단계로 나열하는 답을 생성하는 식입니다 ([Mastering Chain of Thought (CoT) Prompting for Practical AI Tasks](https://huggingface.co/blog/luigi12345/chain-of-thoughts-guide#:~:text=Expected%20Output%3A)). 이처럼 공개 모델로 **작은 CoT 실습**을 해본 뒤, 더 성능이 필요한 경우 공개 API나 대형 모델로 전환하여 같은 프롬프트를 시도해볼 수 있습니다.&lt;br /&gt;
&lt;br /&gt;
- **실습 예제 및 튜토리얼**: CoT 활용을 위한 튜토리얼 자료도 다수 공개되어 있습니다. Hugging Face의 *prompt engineering* 가이드에는 CoT 프롬프트의 작성 예시와 응답 사례들이 포함되어 있어 참고할 수 있으며 ([Chain-of-Thought Prompting | Prompt Engineering Guide&amp;lt;!-- --&amp;gt; ](https://www.promptingguide.ai/techniques/cot#:~:text=Introduced%20in%20Wei%20et%20al,that%20require%20reasoning%20before%20responding)) ([Chain-of-Thought Prompting | Prompt Engineering Guide&amp;lt;!-- --&amp;gt; ](https://www.promptingguide.ai/techniques/cot#:~:text=1,The%20answer%20is%20False)), *Learn Prompting* 같은 사이트에도 CoT 기법을 설명하는 섹션이 있습니다. 예제로, 앞서 언급한 **사과 계산 문제**(“사과를 10개 샀는데 2개를 주고 5개를 더 사고 1개를 먹으면 남은 개수는?”)를 들 수 있는데, CoT 없이 직접 묻는다면 모델이 오답을 내기 쉽지만, *“차근차근 계산해보자.”*라는 문장을 추가하면 모델이 `10 - 2 = 8, 8 + 5 = 13, 13 - 1 = 12` 같은 과정을 거쳐 최종 답 `12개`를 정확히 도출해냅니다. 이 과정을 직접 실습해보면 CoT의 효과를 체감할 수 있습니다. 더 나아가 자신만의 질문 세트를 가지고 CoT 프롬프트를 설계해보는 것도 추천됩니다. 예를 들어 **과학 질문**에 대해 단계적 설명을 유도하거나, **프로그래밍 문제**에 대해 오류 원인을 찾아 고치는 생각의 흐름을 작성하게 하는 등, 다양한 도메인에 CoT를 응용해볼 수 있습니다. 이를 통해 CoT 프롬프트의 **작성 요령**(예시 제시 방법, 문구 선택 등)과 모델의 반응 패턴을 경험적으로 익힐 수 있을 것입니다.&lt;br /&gt;
&lt;br /&gt;
以上의 자료와 가이드를 활용하면, 최신 CoT 연구 아이디어를 직접 실험하고 응용해볼 수 있습니다. 작은 예제로 시작하여 점차 복잡한 문제에 적용하면서, CoT의 강력함과 한계도 파악할 수 있을 것입니다. CoT는 여전히 발전중인 영역이므로, 실습을 통해 얻은 통찰을 바탕으로 프롬프트를 개선하거나 새로운 변형 기법을 고안해보는 것도 의미있는 실험이 될 것입니다.&lt;br /&gt;
&lt;br /&gt;
## 참고 문헌 및 소스&lt;br /&gt;
- Chain-of-Thought 프롬πτ 기법 최초 제안: Wei et al., 2022 ([Language Models Perform Reasoning via Chain of Thought](https://research.google/blog/language-models-perform-reasoning-via-chain-of-thought/#:~:text=In%20%E2%80%9CChain%20of%20Thought%20Prompting,solvable%20with%20standard%20prompting%20methods)) ([Language Models Perform Reasoning via Chain of Thought](https://research.google/blog/language-models-perform-reasoning-via-chain-of-thought/#:~:text=prompting%20can%20improve%20performance%20on,around%20100B))  &lt;br /&gt;
- Zero-Shot CoT (*“Let’s think step by step”*): Kojima et al., 2022 ([[2205.11916] Large Language Models are Zero-Shot Reasoners](https://arxiv.org/abs/2205.11916#:~:text=prompt%20template%2C%20significantly%20outperforms%20zero,hints%20at%20untapped%20and%20understudied)) ([[2205.11916] Large Language Models are Zero-Shot Reasoners](https://arxiv.org/abs/2205.11916#:~:text=SVAMP%29%2C%20symbolic%20reasoning%20,We%20hope%20our))  &lt;br /&gt;
- Self-Consistency 디코딩 전략: Wang et al., 2022 ([[2203.11171] Self-Consistency Improves Chain of Thought Reasoning in Language Models](https://arxiv.org/abs/2203.11171#:~:text=paper%2C%20we%20propose%20a%20new,and%20commonsense%20reasoning%20benchmarks%2C%20including)) ([[2203.11171] Self-Consistency Improves Chain of Thought Reasoning in Language Models](https://arxiv.org/abs/2203.11171#:~:text=correct%20answer,challenge%20%28%2B3.9))  &lt;br /&gt;
- Least-to-Most 문제 분할 프롬πτ: Zhou et al., 2022 ([[2205.10625] Least-to-Most Prompting Enables Complex Reasoning in Large Language Models](https://arxiv.org/abs/2205.10625#:~:text=novel%20prompting%20strategy%2C%20least,benchmark%20SCAN%20in%20any%20split)) ([[2205.10625] Least-to-Most Prompting Enables Complex Reasoning in Large Language Models](https://arxiv.org/abs/2205.10625#:~:text=difficult%20problems%20than%20those%20seen,the%20tasks%20in%20the%20Appendix))  &lt;br /&gt;
- Self-Taught Reasoner (STaR) 알고리즘: Zelikman et al., 2022 ([[2203.14465] STaR: Bootstrapping Reasoning With Reasoning](https://arxiv.org/abs/2203.14465#:~:text=iteratively%20leverage%20a%20small%20number,tuning%20a))  &lt;br /&gt;
- Automatic CoT (Auto-CoT) 생성 기법: Zhang et al., 2022 ([[2210.03493] Automatic Chain of Thought Prompting in Large Language Models](https://ar5iv.org/abs/2210.03493#:~:text=paradigm%20hinges%20on%20the%20hand,3)) ([[2210.03493] Automatic Chain of Thought Prompting in Large Language Models](https://ar5iv.org/abs/2210.03493#:~:text=constructing%20demonstrations,cot))  &lt;br /&gt;
- Tree-of-Thoughts 탐색 프레임워크: Yao et al., 2023 ([[2305.10601] Tree of Thoughts: Deliberate Problem Solving with Large Language Models](https://arxiv.org/abs/2305.10601#:~:text=initial%20decisions%20play%20a%20pivotal,significantly%20enhances%20language%20models%27%20problem)) ([[2305.10601] Tree of Thoughts: Deliberate Problem Solving with Large Language Models](https://arxiv.org/abs/2305.10601#:~:text=experiments%20show%20that%20ToT%20significantly,all%20prompts%3A%20this%20https%20URL))  &lt;br /&gt;
- 그 외 실습 자료: Prompt Engineering Guide (DAIR.AI) ([Chain-of-Thought Prompting | Prompt Engineering Guide&amp;lt;!-- --&amp;gt; ](https://www.promptingguide.ai/techniques/cot#:~:text=Introduced%20in%20Wei%20et%20al,that%20require%20reasoning%20before%20responding)) ([Chain-of-Thought Prompting | Prompt Engineering Guide&amp;lt;!-- --&amp;gt; ](https://www.promptingguide.ai/techniques/cot#:~:text=One%20recent%20idea%20that%20came,see%20how%20the%20model%20performs)), HuggingFace CoT Leaderboard 블로그 ([Introducing the Open Chain of Thought Leaderboard](https://huggingface.co/blog/leaderboard-cot#:~:text=Unlike%20most%20performance%20based%20leaderboards%2C,thought%20prompting)) ([Introducing the Open Chain of Thought Leaderboard](https://huggingface.co/blog/leaderboard-cot#:~:text=Chain,thought%20traces%20may)), CoT-Hub 벤치마크 ([GitHub - FranxYao/chain-of-thought-hub: Benchmarking large language models' complex reasoning ability with chain-of-thought prompting](https://github.com/FranxYao/chain-of-thought-hub#:~:text=)) 등.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/markdown&amp;gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
		
	</entry>
	<entry>
		<id>http://samediff.kr/wiki/index.php?title=Machine_Learning&amp;diff=16222</id>
		<title>Machine Learning</title>
		<link rel="alternate" type="text/html" href="http://samediff.kr/wiki/index.php?title=Machine_Learning&amp;diff=16222"/>
		<updated>2025-02-28T15:16:59Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== after AI ==&lt;br /&gt;
* [[cot연구동향]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==by themes==&lt;br /&gt;
* [[Recommendation]]&lt;br /&gt;
* [[Face]]&lt;br /&gt;
* [[Person re-identification]]&lt;br /&gt;
* [[segmentation]]&lt;br /&gt;
&lt;br /&gt;
==posts==&lt;br /&gt;
* [[conv1d]]&lt;br /&gt;
* [[naive gradient descent]]&lt;br /&gt;
* [https://www.notion.so/nll-loss-57987c7b5f7342e4b6bc929c9b3be587 nll loss]&lt;br /&gt;
&lt;br /&gt;
==ril==&lt;br /&gt;
* https://medium.com/technologymadeeasy/the-best-explanation-of-convolutional-neural-networks-on-the-internet-fbb8b1ad5df8&lt;br /&gt;
* http://nmhkahn.github.io/Casestudy-CNN&lt;br /&gt;
* https://stats.stackexchange.com/questions/205150/how-do-bottleneck-architectures-work-in-neural-networks&lt;br /&gt;
* https://www.quora.com/What-exactly-is-the-degradation-problem-that-Deep-Residual-Networks-try-to-alleviate&lt;br /&gt;
* dl with torch&lt;br /&gt;
* bias 붙여버리면 inv는 어케 구하나? D=0되지 않나? 구할필요 없나?&lt;br /&gt;
* [https://github.com/pytorch/examples pytorch examples ]&lt;br /&gt;
* [https://arxiv.org/abs/1603.05027 Identity Mappings in Deep Residual Networks] arXiv:1603.05027&lt;br /&gt;
* [http://www.fast.ai/2017/07/28/deep-learning-part-two-launch/ cutting edge deeplearning for coders]&lt;br /&gt;
&lt;br /&gt;
==nets==&lt;br /&gt;
* [[1118_Convolutional_Neural_Network|CNN]]&lt;br /&gt;
* [[AlexNet]]&lt;br /&gt;
* [[dilated cnn]]&lt;br /&gt;
* [[pathnet]]&lt;br /&gt;
* [[ResNet]]&lt;br /&gt;
* [[Fast RCNN]]&lt;br /&gt;
* [[Faster RCNN]]&lt;br /&gt;
* [[R-FCN]]&lt;br /&gt;
* [[GoogLeNet|Inception]] (GoogLeNet)&lt;br /&gt;
* [[fully convolutional networks]]&lt;br /&gt;
* [[FractalNets]]&lt;br /&gt;
* [[highway networks]]&lt;br /&gt;
* [[Memory networks]]&lt;br /&gt;
* [[DenseNet]]&lt;br /&gt;
* [[Network in Network|NIN]]&lt;br /&gt;
* [[Deeply Supervised Network|DSN]]&lt;br /&gt;
* [[Ladder Networks]]&lt;br /&gt;
* [[Deeply-Fused Nets|DFNs]]&lt;br /&gt;
* [[YOLO]]&lt;br /&gt;
&lt;br /&gt;
==general==&lt;br /&gt;
* [[0811 Affinity Propagation|Affinity Propagation]], [[Apcluster sparse]]&lt;br /&gt;
* &amp;lt;del&amp;gt;[[CUDA기타설치]]&amp;lt;/del&amp;gt;&lt;br /&gt;
* [[Learning to learn by GD by GD]]&lt;br /&gt;
* [[Generative Models]] (GAN, VAE, etc)&lt;br /&gt;
* [[Batch Normalization]]&lt;br /&gt;
* [[Mean Average Precision]]&lt;br /&gt;
* [https://medium.com/@kailashahirwar/essential-cheat-sheets-for-machine-learning-and-deep-learning-researchers-efb6a8ebd2e5 Essential Cheat Sheets for Machine Learning and Deep Learning Engineers]&lt;br /&gt;
* [http://fa.bianp.net/blog/2014/surrogate-loss-functions-in-machine-learning/ What is surrogate loss?]&lt;br /&gt;
* [[Exponential Linear Unit]]&lt;br /&gt;
* [[Neural net이 working하지 않는 37가지 이유]]&lt;br /&gt;
* [[deconvolution]]&lt;br /&gt;
* [[Sparse coding]]&lt;br /&gt;
* [http://mxnet.io/model_zoo/index.html MXNet Model Zoo]&lt;br /&gt;
* [[logistic regression]]&lt;br /&gt;
*[[0926 information bottleneck|information bottleneck]]&lt;br /&gt;
*[[0928 Artificial Curiosity|Artificial Curiosity]]&lt;br /&gt;
* sklearn examples&lt;br /&gt;
** [[sklearn preprocessing]]&lt;br /&gt;
&lt;br /&gt;
==x==&lt;br /&gt;
* [[Isolation Forest]]&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
		
	</entry>
	<entry>
		<id>http://samediff.kr/wiki/index.php?title=%EB%8C%80%EB%AC%B8&amp;diff=16221</id>
		<title>대문</title>
		<link rel="alternate" type="text/html" href="http://samediff.kr/wiki/index.php?title=%EB%8C%80%EB%AC%B8&amp;diff=16221"/>
		<updated>2024-01-22T18:40:09Z</updated>

		<summary type="html">&lt;p&gt;Admin: /* scrap */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Special:RecentChanges| RecentChanges]]&lt;br /&gt;
==memo==&lt;br /&gt;
* [[Machine Learning]]&lt;br /&gt;
* [[Quiz/Math/Stat]]&lt;br /&gt;
* [[영어]]&lt;br /&gt;
* blog&lt;br /&gt;
**[[blog2020|2020~]]&lt;br /&gt;
**[[blog|2014~2019]] &lt;br /&gt;
**[[Pilhoon.tistory.com|2011~2014]]&lt;br /&gt;
**[[Pilhoon.tistory.com/2010|2010]], [[Pilhoon.tistory.com/2009|2009]], [[Pilhoon.tistory.com/2008|2008]], [[Pilhoon.tistory.com/2007|2007]], [[Pilhoon.tistory.com/2006|2006]], [[Pilhoon.tistory.com/2005|2005]], [[Pilhoon.tistory.com/2004|2004]]&lt;br /&gt;
* [[scratch]]&lt;br /&gt;
** [[tabs|todo, browser tabs]], [https://www.youcandothecube.com/solve-it/2-x-2-solution how to cube]&lt;br /&gt;
*&amp;lt;del&amp;gt;[[Read-it-later]], [[I've read it]], [[Watch-later]] &amp;lt;/del&amp;gt;&lt;br /&gt;
* [http://kor.pe.kr/util/4/charmap.htm 특수문자리스트]&lt;br /&gt;
&lt;br /&gt;
== articles ==&lt;br /&gt;
=== scrap ===&lt;br /&gt;
*[[탤런트 코드]] / [[재능의 탄생]] / [[재능은 어떻게 단련되는가?]] / [[배지영 소설]] / [[황정은 장편소설 : 百의 그림자]] / [[야만적인 앨리스씨]] / [[순수박물관]] / [[엄청나게 시끄럽고 믿을 수 없게 가까운]] / [[나는 이 세상에 없는 계절이다]] / [[남아 있는 나날]] / [[너무나 많은 시작]] / [[생강]] / [[사랑하기 때문에]] / [[구경꾼들]] / [[은교]] / [[우리는 언젠가 죽는다]]  / [[태연한 인생]] / [[죄와 속죄의 저편]] / [[환상통]] / [[상냥한 폭력의 시대]] / [[82년생 김지영]] / [[혼자 산다는 것에 대하여]] / [[유혹의 학교]] / [[구의 증명]] / [[천재들의 머니게임]] / [[투자전쟁]] / [[배움의 기술]] / [[사는게 뭐라고]] / [[0908 그것이 나만은 아니기를|그것이 나만은 아니기를]] / [[0903 라이어스 포커|라이어스 포커]] / [[0905 모든것을 기억하는 남자|모든것을 기억하는 남자]] / [[0905 뉴턴과 화폐위조범|뉴턴과 화폐위조범]] / [[1003 아주 짧게 소개하는 수학|아주 짧게 소개하는 수학]] / [[1004 1년 만에 기억력 천재가 된 남자|1년 만에 기억력 천재가 된 남자]] / [[1009 실력과 노력으로 성공했다는 당신에게|실력과 노력으로 성공했다는 당신에게]] / [[0826 부메랑|부메랑]] / [[0903 무신론 기자, 크리스천 과학자에게 따지다|무신론 기자, 크리스천 과학자에게 따지다]] / [[0903 디디의 우산|디디의 우산]] / [[0903 절망의 나라의 행복한 젊은이들|절망의 나라의 행복한 젊은이들]] / [[0906 팩트풀니스|팩트풀니스]] / [[0906 일베의 사상|일베의 사상]] / [[0907 나는 그것에 대해 아주 오랫동안 생각해|나는 그것에 대해 아주 오랫동안 생각해]] / [[0907 지금부터 재판을 시작하겠습니다|지금부터 재판을 시작하겠습니다]] / [[0907 가벼운 나날|가벼운 나날]] / [[0908 연애의 기억|연애의 기억]] / [[0909 메트릭 스튜디오 | 메트릭 스튜디오]] / [[0909 네이버 증권으로 배우는 주식투자 실전 가이드북|네이버 증권으로 배우는 주식투자 실전 가이드북]] / [[0909 우리는 차별에 찬성합니다|우리는 차별에 찬성합니다]] / [[0910 쇼코의 미소 | 쇼코의 미소 ]] / [[0910 사는게 뭐라고|사는게 뭐라고]] / [[0910 피터 린치의 이기는 투자|피터 린치의 이기는 투자]] / [https://www.notion.so/02ea40ffd065429dadc098a2dde70099 시간 있으면 나 좀 좋아해 줘] / [https://www.notion.so/26fadd454fa742c7a7cccd812dfe169d 인플레이션의 시대] / [https://www.notion.so/8c038739fae2481081eacbae22cfaa05 인플레이션] / [https://tungsten-roundworm-f97.notion.site/7f552089d609497fac844c85fa85163c 깃털 도둑] / [https://tungsten-roundworm-f97.notion.site/ca7e45246af04d5e9671f03cf3737035 돈을 찍어내는 제왕, 연준] / [https://tungsten-roundworm-f97.notion.site/27b64672154947df9e19353d2fc5dd20 미래에서 온 남자 폰 노이만]&lt;br /&gt;
&lt;br /&gt;
=== manual &amp;amp;amp; howto ===&lt;br /&gt;
*[[C++]],[[C]],[[gdb]]&lt;br /&gt;
*[[Bash]] &lt;br /&gt;
*[[Emacs]]/[[Vim]] &lt;br /&gt;
*[[Linux]] / [[Solaris]] / [[Windows]] / [[Mac OS]] / [[vmware]] / [[android]]&lt;br /&gt;
*commands &lt;br /&gt;
** [[awk]] / [[find]] / [[join]] / [[nice]] / [[rsync]] / [[sed]] / [[svn]] / [[tcpdump]] / [[tr]] / [[mutt]] / [[curl]] / [[column]] / [[zip]] / [[date]] / [[file]] / [[scp]] / [[printf]] / [[sort]] / [[tar]] / [[strace]]&lt;br /&gt;
* [[python]] / [[jupyter]] / [[matplotlib,seaborn]]&lt;br /&gt;
* [[R]] / [[numpy]] / [[matlab]] / [[sklearn]] / [[PIL_Image / opencv]]&lt;br /&gt;
* [[tensorflow]] / [[torch]] / [[mxnet]] / [[lua]] &lt;br /&gt;
* [[git]]&lt;br /&gt;
* [[TeX|TeX, MathJax]]&lt;br /&gt;
*&amp;lt;del&amp;gt;[[sqlite]]&amp;lt;/del&amp;gt;&lt;br /&gt;
*&amp;lt;del&amp;gt;[[RFCs]]&amp;lt;/del&amp;gt;&lt;br /&gt;
*&amp;lt;del&amp;gt;[[Java]] &amp;lt;/del&amp;gt;&lt;br /&gt;
*&amp;lt;del&amp;gt;[[Php]] &amp;lt;/del&amp;gt;&lt;br /&gt;
*[[mysql/hive/redis]]&lt;br /&gt;
* [https://guides.github.com/features/mastering-markdown/ github markdown guide] / [[markdown]]&lt;br /&gt;
&lt;br /&gt;
== 삽질들 ==&lt;br /&gt;
* [[1 million factorial]]&lt;br /&gt;
** [[prime numbers]]&lt;br /&gt;
* [[TV 무선으로 보기]] (실패)&lt;br /&gt;
* [[x60s에 ssd달기]]&lt;br /&gt;
* [[pdf 홀짝페이지 파일 합치기]]&lt;br /&gt;
&lt;br /&gt;
== 위키 ==&lt;br /&gt;
* [http://www.mediawiki.org/wiki/Manual:Configuration_settings 설정하기]&lt;br /&gt;
* [http://www.mediawiki.org/wiki/Manual:FAQ 미디어위키 FAQ]&lt;br /&gt;
* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce 미디어위키 발표 메일링 리스트]&lt;br /&gt;
* [http://meta.wikimedia.org/wiki/Help:Contents 미디어위키 help]&lt;br /&gt;
* [[내가 수정한 것들]]&lt;br /&gt;
* 기타참고&lt;br /&gt;
**[https://twitter.com/Floating_ghoti/status/1195678171917537281 40여분짜리 음악들]&lt;br /&gt;
**[http://en.wikipedia.org/wiki/Help:Wiki_markup wiki markup], [https://www.mediawiki.org/wiki/Help:Formatting media wiki Help:Formatting], [https://www.mediawiki.org/wiki/Extension:SyntaxHighlight media wiki SyntaxHighlight], [https://www.mediawiki.org/wiki/Help:Tables mediawiki table]&lt;br /&gt;
**[http://meta.wikimedia.org/wiki/Help:Advanced_editing advanced editing]&lt;br /&gt;
**[http://en.wikipedia.org/wiki/Wikipedia:Cheatsheet cheatsheet]&lt;br /&gt;
**[http://www.mediawiki.org/wiki/Help:Formatting Help:Formatting]&lt;br /&gt;
**[https://meta.wikimedia.org/wiki/Help:Displaying_a_formula 수식]&lt;br /&gt;
**[https://www.mediawiki.org/wiki/Topic:Ro5g5jyw935kaksb template variables within html tags] : &amp;lt;c&amp;gt;{{#tag:html | &amp;lt;blabla&amp;gt;{{{var}}}&amp;lt;/blabla&amp;gt;}}&amp;lt;/c&amp;gt;&lt;br /&gt;
**[https://www.mediawiki.org/wiki/Topic:Pzvu1613ewnfahcd get exact image path] : &amp;lt;c&amp;gt;{{filepath:}}&amp;lt;/c&amp;gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
		
	</entry>
	<entry>
		<id>http://samediff.kr/wiki/index.php?title=%EB%8C%80%EB%AC%B8&amp;diff=16220</id>
		<title>대문</title>
		<link rel="alternate" type="text/html" href="http://samediff.kr/wiki/index.php?title=%EB%8C%80%EB%AC%B8&amp;diff=16220"/>
		<updated>2024-01-22T01:55:43Z</updated>

		<summary type="html">&lt;p&gt;Admin: /* scrap */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Special:RecentChanges| RecentChanges]]&lt;br /&gt;
==memo==&lt;br /&gt;
* [[Machine Learning]]&lt;br /&gt;
* [[Quiz/Math/Stat]]&lt;br /&gt;
* [[영어]]&lt;br /&gt;
* blog&lt;br /&gt;
**[[blog2020|2020~]]&lt;br /&gt;
**[[blog|2014~2019]] &lt;br /&gt;
**[[Pilhoon.tistory.com|2011~2014]]&lt;br /&gt;
**[[Pilhoon.tistory.com/2010|2010]], [[Pilhoon.tistory.com/2009|2009]], [[Pilhoon.tistory.com/2008|2008]], [[Pilhoon.tistory.com/2007|2007]], [[Pilhoon.tistory.com/2006|2006]], [[Pilhoon.tistory.com/2005|2005]], [[Pilhoon.tistory.com/2004|2004]]&lt;br /&gt;
* [[scratch]]&lt;br /&gt;
** [[tabs|todo, browser tabs]], [https://www.youcandothecube.com/solve-it/2-x-2-solution how to cube]&lt;br /&gt;
*&amp;lt;del&amp;gt;[[Read-it-later]], [[I've read it]], [[Watch-later]] &amp;lt;/del&amp;gt;&lt;br /&gt;
* [http://kor.pe.kr/util/4/charmap.htm 특수문자리스트]&lt;br /&gt;
&lt;br /&gt;
== articles ==&lt;br /&gt;
=== scrap ===&lt;br /&gt;
*[[탤런트 코드]] / [[재능의 탄생]] / [[재능은 어떻게 단련되는가?]] / [[배지영 소설]] / [[황정은 장편소설 : 百의 그림자]] / [[야만적인 앨리스씨]] / [[순수박물관]] / [[엄청나게 시끄럽고 믿을 수 없게 가까운]] / [[나는 이 세상에 없는 계절이다]] / [[남아 있는 나날]] / [[너무나 많은 시작]] / [[생강]] / [[사랑하기 때문에]] / [[구경꾼들]] / [[은교]] / [[우리는 언젠가 죽는다]]  / [[태연한 인생]] / [[죄와 속죄의 저편]] / [[환상통]] / [[상냥한 폭력의 시대]] / [[82년생 김지영]] / [[혼자 산다는 것에 대하여]] / [[유혹의 학교]] / [[구의 증명]] / [[천재들의 머니게임]] / [[투자전쟁]] / [[배움의 기술]] / [[사는게 뭐라고]] / [[0908 그것이 나만은 아니기를|그것이 나만은 아니기를]] / [[0903 라이어스 포커|라이어스 포커]] / [[0905 모든것을 기억하는 남자|모든것을 기억하는 남자]] / [[0905 뉴턴과 화폐위조범|뉴턴과 화폐위조범]] / [[1003 아주 짧게 소개하는 수학|아주 짧게 소개하는 수학]] / [[1004 1년 만에 기억력 천재가 된 남자|1년 만에 기억력 천재가 된 남자]] / [[1009 실력과 노력으로 성공했다는 당신에게|실력과 노력으로 성공했다는 당신에게]] / [[0826 부메랑|부메랑]] / [[0903 무신론 기자, 크리스천 과학자에게 따지다|무신론 기자, 크리스천 과학자에게 따지다]] / [[0903 디디의 우산|디디의 우산]] / [[0903 절망의 나라의 행복한 젊은이들|절망의 나라의 행복한 젊은이들]] / [[0906 팩트풀니스|팩트풀니스]] / [[0906 일베의 사상|일베의 사상]] / [[0907 나는 그것에 대해 아주 오랫동안 생각해|나는 그것에 대해 아주 오랫동안 생각해]] / [[0907 지금부터 재판을 시작하겠습니다|지금부터 재판을 시작하겠습니다]] / [[0907 가벼운 나날|가벼운 나날]] / [[0908 연애의 기억|연애의 기억]] / [[0909 메트릭 스튜디오 | 메트릭 스튜디오]] / [[0909 네이버 증권으로 배우는 주식투자 실전 가이드북|네이버 증권으로 배우는 주식투자 실전 가이드북]] / [[0909 우리는 차별에 찬성합니다|우리는 차별에 찬성합니다]] / [[0910 쇼코의 미소 | 쇼코의 미소 ]] / [[0910 사는게 뭐라고|사는게 뭐라고]] / [[0910 피터 린치의 이기는 투자|피터 린치의 이기는 투자]] / [https://www.notion.so/02ea40ffd065429dadc098a2dde70099 시간 있으면 나 좀 좋아해 줘] / [https://www.notion.so/26fadd454fa742c7a7cccd812dfe169d 인플레이션의 시대] / [https://www.notion.so/8c038739fae2481081eacbae22cfaa05 인플레이션] / [https://tungsten-roundworm-f97.notion.site/7f552089d609497fac844c85fa85163c 깃털 도둑] / [https://tungsten-roundworm-f97.notion.site/ca7e45246af04d5e9671f03cf3737035 돈을 찍어내는 제왕, 연준]&lt;br /&gt;
&lt;br /&gt;
=== manual &amp;amp;amp; howto ===&lt;br /&gt;
*[[C++]],[[C]],[[gdb]]&lt;br /&gt;
*[[Bash]] &lt;br /&gt;
*[[Emacs]]/[[Vim]] &lt;br /&gt;
*[[Linux]] / [[Solaris]] / [[Windows]] / [[Mac OS]] / [[vmware]] / [[android]]&lt;br /&gt;
*commands &lt;br /&gt;
** [[awk]] / [[find]] / [[join]] / [[nice]] / [[rsync]] / [[sed]] / [[svn]] / [[tcpdump]] / [[tr]] / [[mutt]] / [[curl]] / [[column]] / [[zip]] / [[date]] / [[file]] / [[scp]] / [[printf]] / [[sort]] / [[tar]] / [[strace]]&lt;br /&gt;
* [[python]] / [[jupyter]] / [[matplotlib,seaborn]]&lt;br /&gt;
* [[R]] / [[numpy]] / [[matlab]] / [[sklearn]] / [[PIL_Image / opencv]]&lt;br /&gt;
* [[tensorflow]] / [[torch]] / [[mxnet]] / [[lua]] &lt;br /&gt;
* [[git]]&lt;br /&gt;
* [[TeX|TeX, MathJax]]&lt;br /&gt;
*&amp;lt;del&amp;gt;[[sqlite]]&amp;lt;/del&amp;gt;&lt;br /&gt;
*&amp;lt;del&amp;gt;[[RFCs]]&amp;lt;/del&amp;gt;&lt;br /&gt;
*&amp;lt;del&amp;gt;[[Java]] &amp;lt;/del&amp;gt;&lt;br /&gt;
*&amp;lt;del&amp;gt;[[Php]] &amp;lt;/del&amp;gt;&lt;br /&gt;
*[[mysql/hive/redis]]&lt;br /&gt;
* [https://guides.github.com/features/mastering-markdown/ github markdown guide] / [[markdown]]&lt;br /&gt;
&lt;br /&gt;
== 삽질들 ==&lt;br /&gt;
* [[1 million factorial]]&lt;br /&gt;
** [[prime numbers]]&lt;br /&gt;
* [[TV 무선으로 보기]] (실패)&lt;br /&gt;
* [[x60s에 ssd달기]]&lt;br /&gt;
* [[pdf 홀짝페이지 파일 합치기]]&lt;br /&gt;
&lt;br /&gt;
== 위키 ==&lt;br /&gt;
* [http://www.mediawiki.org/wiki/Manual:Configuration_settings 설정하기]&lt;br /&gt;
* [http://www.mediawiki.org/wiki/Manual:FAQ 미디어위키 FAQ]&lt;br /&gt;
* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce 미디어위키 발표 메일링 리스트]&lt;br /&gt;
* [http://meta.wikimedia.org/wiki/Help:Contents 미디어위키 help]&lt;br /&gt;
* [[내가 수정한 것들]]&lt;br /&gt;
* 기타참고&lt;br /&gt;
**[https://twitter.com/Floating_ghoti/status/1195678171917537281 40여분짜리 음악들]&lt;br /&gt;
**[http://en.wikipedia.org/wiki/Help:Wiki_markup wiki markup], [https://www.mediawiki.org/wiki/Help:Formatting media wiki Help:Formatting], [https://www.mediawiki.org/wiki/Extension:SyntaxHighlight media wiki SyntaxHighlight], [https://www.mediawiki.org/wiki/Help:Tables mediawiki table]&lt;br /&gt;
**[http://meta.wikimedia.org/wiki/Help:Advanced_editing advanced editing]&lt;br /&gt;
**[http://en.wikipedia.org/wiki/Wikipedia:Cheatsheet cheatsheet]&lt;br /&gt;
**[http://www.mediawiki.org/wiki/Help:Formatting Help:Formatting]&lt;br /&gt;
**[https://meta.wikimedia.org/wiki/Help:Displaying_a_formula 수식]&lt;br /&gt;
**[https://www.mediawiki.org/wiki/Topic:Ro5g5jyw935kaksb template variables within html tags] : &amp;lt;c&amp;gt;{{#tag:html | &amp;lt;blabla&amp;gt;{{{var}}}&amp;lt;/blabla&amp;gt;}}&amp;lt;/c&amp;gt;&lt;br /&gt;
**[https://www.mediawiki.org/wiki/Topic:Pzvu1613ewnfahcd get exact image path] : &amp;lt;c&amp;gt;{{filepath:}}&amp;lt;/c&amp;gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
		
	</entry>
	<entry>
		<id>http://samediff.kr/wiki/index.php?title=%EB%8C%80%EB%AC%B8&amp;diff=16219</id>
		<title>대문</title>
		<link rel="alternate" type="text/html" href="http://samediff.kr/wiki/index.php?title=%EB%8C%80%EB%AC%B8&amp;diff=16219"/>
		<updated>2024-01-21T23:47:13Z</updated>

		<summary type="html">&lt;p&gt;Admin: /* scrap */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Special:RecentChanges| RecentChanges]]&lt;br /&gt;
==memo==&lt;br /&gt;
* [[Machine Learning]]&lt;br /&gt;
* [[Quiz/Math/Stat]]&lt;br /&gt;
* [[영어]]&lt;br /&gt;
* blog&lt;br /&gt;
**[[blog2020|2020~]]&lt;br /&gt;
**[[blog|2014~2019]] &lt;br /&gt;
**[[Pilhoon.tistory.com|2011~2014]]&lt;br /&gt;
**[[Pilhoon.tistory.com/2010|2010]], [[Pilhoon.tistory.com/2009|2009]], [[Pilhoon.tistory.com/2008|2008]], [[Pilhoon.tistory.com/2007|2007]], [[Pilhoon.tistory.com/2006|2006]], [[Pilhoon.tistory.com/2005|2005]], [[Pilhoon.tistory.com/2004|2004]]&lt;br /&gt;
* [[scratch]]&lt;br /&gt;
** [[tabs|todo, browser tabs]], [https://www.youcandothecube.com/solve-it/2-x-2-solution how to cube]&lt;br /&gt;
*&amp;lt;del&amp;gt;[[Read-it-later]], [[I've read it]], [[Watch-later]] &amp;lt;/del&amp;gt;&lt;br /&gt;
* [http://kor.pe.kr/util/4/charmap.htm 특수문자리스트]&lt;br /&gt;
&lt;br /&gt;
== articles ==&lt;br /&gt;
=== scrap ===&lt;br /&gt;
*[[탤런트 코드]] / [[재능의 탄생]] / [[재능은 어떻게 단련되는가?]] / [[배지영 소설]] / [[황정은 장편소설 : 百의 그림자]] / [[야만적인 앨리스씨]] / [[순수박물관]] / [[엄청나게 시끄럽고 믿을 수 없게 가까운]] / [[나는 이 세상에 없는 계절이다]] / [[남아 있는 나날]] / [[너무나 많은 시작]] / [[생강]] / [[사랑하기 때문에]] / [[구경꾼들]] / [[은교]] / [[우리는 언젠가 죽는다]]  / [[태연한 인생]] / [[죄와 속죄의 저편]] / [[환상통]] / [[상냥한 폭력의 시대]] / [[82년생 김지영]] / [[혼자 산다는 것에 대하여]] / [[유혹의 학교]] / [[구의 증명]] / [[천재들의 머니게임]] / [[투자전쟁]] / [[배움의 기술]] / [[사는게 뭐라고]] / [[0908 그것이 나만은 아니기를|그것이 나만은 아니기를]] / [[0903 라이어스 포커|라이어스 포커]] / [[0905 모든것을 기억하는 남자|모든것을 기억하는 남자]] / [[0905 뉴턴과 화폐위조범|뉴턴과 화폐위조범]] / [[1003 아주 짧게 소개하는 수학|아주 짧게 소개하는 수학]] / [[1004 1년 만에 기억력 천재가 된 남자|1년 만에 기억력 천재가 된 남자]] / [[1009 실력과 노력으로 성공했다는 당신에게|실력과 노력으로 성공했다는 당신에게]] / [[0826 부메랑|부메랑]] / [[0903 무신론 기자, 크리스천 과학자에게 따지다|무신론 기자, 크리스천 과학자에게 따지다]] / [[0903 디디의 우산|디디의 우산]] / [[0903 절망의 나라의 행복한 젊은이들|절망의 나라의 행복한 젊은이들]] / [[0906 팩트풀니스|팩트풀니스]] / [[0906 일베의 사상|일베의 사상]] / [[0907 나는 그것에 대해 아주 오랫동안 생각해|나는 그것에 대해 아주 오랫동안 생각해]] / [[0907 지금부터 재판을 시작하겠습니다|지금부터 재판을 시작하겠습니다]] / [[0907 가벼운 나날|가벼운 나날]] / [[0908 연애의 기억|연애의 기억]] / [[0909 메트릭 스튜디오 | 메트릭 스튜디오]] / [[0909 네이버 증권으로 배우는 주식투자 실전 가이드북|네이버 증권으로 배우는 주식투자 실전 가이드북]] / [[0909 우리는 차별에 찬성합니다|우리는 차별에 찬성합니다]] / [[0910 쇼코의 미소 | 쇼코의 미소 ]] / [[0910 사는게 뭐라고|사는게 뭐라고]] / [[0910 피터 린치의 이기는 투자|피터 린치의 이기는 투자]] / [https://www.notion.so/02ea40ffd065429dadc098a2dde70099 시간 있으면 나 좀 좋아해 줘] / [https://www.notion.so/26fadd454fa742c7a7cccd812dfe169d 인플레이션의 시대] / [https://www.notion.so/8c038739fae2481081eacbae22cfaa05 인플레이션] / [https://tungsten-roundworm-f97.notion.site/7f552089d609497fac844c85fa85163c 깃털 도둑]&lt;br /&gt;
&lt;br /&gt;
=== manual &amp;amp;amp; howto ===&lt;br /&gt;
*[[C++]],[[C]],[[gdb]]&lt;br /&gt;
*[[Bash]] &lt;br /&gt;
*[[Emacs]]/[[Vim]] &lt;br /&gt;
*[[Linux]] / [[Solaris]] / [[Windows]] / [[Mac OS]] / [[vmware]] / [[android]]&lt;br /&gt;
*commands &lt;br /&gt;
** [[awk]] / [[find]] / [[join]] / [[nice]] / [[rsync]] / [[sed]] / [[svn]] / [[tcpdump]] / [[tr]] / [[mutt]] / [[curl]] / [[column]] / [[zip]] / [[date]] / [[file]] / [[scp]] / [[printf]] / [[sort]] / [[tar]] / [[strace]]&lt;br /&gt;
* [[python]] / [[jupyter]] / [[matplotlib,seaborn]]&lt;br /&gt;
* [[R]] / [[numpy]] / [[matlab]] / [[sklearn]] / [[PIL_Image / opencv]]&lt;br /&gt;
* [[tensorflow]] / [[torch]] / [[mxnet]] / [[lua]] &lt;br /&gt;
* [[git]]&lt;br /&gt;
* [[TeX|TeX, MathJax]]&lt;br /&gt;
*&amp;lt;del&amp;gt;[[sqlite]]&amp;lt;/del&amp;gt;&lt;br /&gt;
*&amp;lt;del&amp;gt;[[RFCs]]&amp;lt;/del&amp;gt;&lt;br /&gt;
*&amp;lt;del&amp;gt;[[Java]] &amp;lt;/del&amp;gt;&lt;br /&gt;
*&amp;lt;del&amp;gt;[[Php]] &amp;lt;/del&amp;gt;&lt;br /&gt;
*[[mysql/hive/redis]]&lt;br /&gt;
* [https://guides.github.com/features/mastering-markdown/ github markdown guide] / [[markdown]]&lt;br /&gt;
&lt;br /&gt;
== 삽질들 ==&lt;br /&gt;
* [[1 million factorial]]&lt;br /&gt;
** [[prime numbers]]&lt;br /&gt;
* [[TV 무선으로 보기]] (실패)&lt;br /&gt;
* [[x60s에 ssd달기]]&lt;br /&gt;
* [[pdf 홀짝페이지 파일 합치기]]&lt;br /&gt;
&lt;br /&gt;
== 위키 ==&lt;br /&gt;
* [http://www.mediawiki.org/wiki/Manual:Configuration_settings 설정하기]&lt;br /&gt;
* [http://www.mediawiki.org/wiki/Manual:FAQ 미디어위키 FAQ]&lt;br /&gt;
* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce 미디어위키 발표 메일링 리스트]&lt;br /&gt;
* [http://meta.wikimedia.org/wiki/Help:Contents 미디어위키 help]&lt;br /&gt;
* [[내가 수정한 것들]]&lt;br /&gt;
* 기타참고&lt;br /&gt;
**[https://twitter.com/Floating_ghoti/status/1195678171917537281 40여분짜리 음악들]&lt;br /&gt;
**[http://en.wikipedia.org/wiki/Help:Wiki_markup wiki markup], [https://www.mediawiki.org/wiki/Help:Formatting media wiki Help:Formatting], [https://www.mediawiki.org/wiki/Extension:SyntaxHighlight media wiki SyntaxHighlight], [https://www.mediawiki.org/wiki/Help:Tables mediawiki table]&lt;br /&gt;
**[http://meta.wikimedia.org/wiki/Help:Advanced_editing advanced editing]&lt;br /&gt;
**[http://en.wikipedia.org/wiki/Wikipedia:Cheatsheet cheatsheet]&lt;br /&gt;
**[http://www.mediawiki.org/wiki/Help:Formatting Help:Formatting]&lt;br /&gt;
**[https://meta.wikimedia.org/wiki/Help:Displaying_a_formula 수식]&lt;br /&gt;
**[https://www.mediawiki.org/wiki/Topic:Ro5g5jyw935kaksb template variables within html tags] : &amp;lt;c&amp;gt;{{#tag:html | &amp;lt;blabla&amp;gt;{{{var}}}&amp;lt;/blabla&amp;gt;}}&amp;lt;/c&amp;gt;&lt;br /&gt;
**[https://www.mediawiki.org/wiki/Topic:Pzvu1613ewnfahcd get exact image path] : &amp;lt;c&amp;gt;{{filepath:}}&amp;lt;/c&amp;gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
		
	</entry>
	<entry>
		<id>http://samediff.kr/wiki/index.php?title=Python&amp;diff=16218</id>
		<title>Python</title>
		<link rel="alternate" type="text/html" href="http://samediff.kr/wiki/index.php?title=Python&amp;diff=16218"/>
		<updated>2023-02-20T04:10:09Z</updated>

		<summary type="html">&lt;p&gt;Admin: /* pdf file merge */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== pdb howto ==&lt;br /&gt;
[https://realpython.com/python-debugging-pdb/]&lt;br /&gt;
&lt;br /&gt;
==start debugger automatically on error==&lt;br /&gt;
 python -m pdb -c continue myscript.py&lt;br /&gt;
[https://stackoverflow.com/a/2438834/766330]&lt;br /&gt;
&lt;br /&gt;
==print all variables==&lt;br /&gt;
 locals()&lt;br /&gt;
[https://stackoverflow.com/questions/21961693/how-to-print-all-variables-values-when-debugging-python-with-pdb-without-specif]&lt;br /&gt;
&lt;br /&gt;
==current time as str==&lt;br /&gt;
 import datetime&lt;br /&gt;
 cur = datetime.datetime.now()&lt;br /&gt;
 cur.strftime('%m%d%H%M')&lt;br /&gt;
[https://tecadmin.net/get-current-date-time-python/]&lt;br /&gt;
&lt;br /&gt;
==simple line plots==&lt;br /&gt;
 plt.style.use('seaborn-whitegrid')&lt;br /&gt;
[https://jakevdp.github.io/PythonDataScienceHandbook/04.01-simple-line-plots.html]&lt;br /&gt;
&lt;br /&gt;
==flatten all lists recursively==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
li=[[1,[[2]],[[[3]]]],[['4'],{5:5}]]&lt;br /&gt;
flatten=lambda l: sum(map(flatten,l),[]) if isinstance(l,list) else [l]&lt;br /&gt;
print flatten(li)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
[https://stackoverflow.com/a/12474246/766330]&lt;br /&gt;
&lt;br /&gt;
다음과 같은 기묘한 속성 때문이다&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; [] + [1]&lt;br /&gt;
[1]&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; sum([[1]], [2])&lt;br /&gt;
[2, 1]&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; sum([[1]], [])&lt;br /&gt;
[1]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
다음을 실행하면,&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
depth = 0&lt;br /&gt;
def flatten_(x):&lt;br /&gt;
    global depth&lt;br /&gt;
    depth += 1&lt;br /&gt;
    r = None&lt;br /&gt;
    if isinstance(x, list):&lt;br /&gt;
        print('&amp;gt;'*depth, 'list:', x)&lt;br /&gt;
        y = sum(map(flatten_,x), [])&lt;br /&gt;
        r = y&lt;br /&gt;
    else:&lt;br /&gt;
        print('&amp;gt;'*depth, 'not list:',x)&lt;br /&gt;
        r = [x]&lt;br /&gt;
    print('&amp;lt;'*depth, 'returning', r)&lt;br /&gt;
    depth -= 1&lt;br /&gt;
    return r&lt;br /&gt;
    &lt;br /&gt;
li=[[1,[[2]],[[[3]]]],[['4'],{5:5}]]&lt;br /&gt;
flatten_(li)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
결과는,&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;gt; list: [[1, [[2]], [[[3]]]], [['4'], {5: 5}]]&lt;br /&gt;
&amp;gt;&amp;gt; list: [1, [[2]], [[[3]]]]&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; not list: 1&lt;br /&gt;
&amp;lt;&amp;lt;&amp;lt; returning [1]&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; list: [[2]]&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt;&amp;gt; list: [2]&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; not list: 2&lt;br /&gt;
&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt; returning [2]&lt;br /&gt;
&amp;lt;&amp;lt;&amp;lt;&amp;lt; returning [2]&lt;br /&gt;
&amp;lt;&amp;lt;&amp;lt; returning [2]&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; list: [[[3]]]&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt;&amp;gt; list: [[3]]&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; list: [3]&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; not list: 3&lt;br /&gt;
&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt; returning [3]&lt;br /&gt;
&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt; returning [3]&lt;br /&gt;
&amp;lt;&amp;lt;&amp;lt;&amp;lt; returning [3]&lt;br /&gt;
&amp;lt;&amp;lt;&amp;lt; returning [3]&lt;br /&gt;
&amp;lt;&amp;lt; returning [1, 2, 3]&lt;br /&gt;
&amp;gt;&amp;gt; list: [['4'], {5: 5}]&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; list: ['4']&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt;&amp;gt; not list: 4&lt;br /&gt;
&amp;lt;&amp;lt;&amp;lt;&amp;lt; returning ['4']&lt;br /&gt;
&amp;lt;&amp;lt;&amp;lt; returning ['4']&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; not list: {5: 5}&lt;br /&gt;
&amp;lt;&amp;lt;&amp;lt; returning [{5: 5}]&lt;br /&gt;
&amp;lt;&amp;lt; returning ['4', {5: 5}]&lt;br /&gt;
&amp;lt; returning [1, 2, 3, '4', {5: 5}]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==재정의==&lt;br /&gt;
[https://docs.python.org/3/reference/datamodel.html#object.__int__ 이 페이지]에 거의 다 있는듯함.&amp;lt;br&amp;gt;&lt;br /&gt;
나열하면 다음과 같다.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
__abs__             __add__             __aenter__          __aexit__           &lt;br /&gt;
__aiter__           __and__             __anext__           __annotations__     &lt;br /&gt;
__await__           __bases__           __bool__            __bytes__           &lt;br /&gt;
__call__            __ceil__            __class__           __classcell__       &lt;br /&gt;
__closure__         __code__            __complex__         __contains__        &lt;br /&gt;
__defaults__        __del__             __delattr__         __delete__          &lt;br /&gt;
__delitem__         __dict__            __dir__             __divmod__          &lt;br /&gt;
__doc__             __enter__           __eq__              __exit__            &lt;br /&gt;
__file__            __float__           __floor__           __floordiv__        &lt;br /&gt;
__format__          __func__            __future__          __ge__              &lt;br /&gt;
__get__             __getattr__         __getattribute__    __getitem__         &lt;br /&gt;
__globals__         __gt__              __hash__            __iadd__            &lt;br /&gt;
__iand__            __ifloordiv__       __ilshift__         __imatmul__         &lt;br /&gt;
__imod__            __import__          __imul__            __index__           &lt;br /&gt;
__init__            __instancecheck__   __int__             __invert__          &lt;br /&gt;
__ior__             __ipow__            __irshift__         __isub__            &lt;br /&gt;
__iter__            __itruediv__        __ixor__            __kwdefaults__      &lt;br /&gt;
__le__              __len__             __lshift__          __lt__              &lt;br /&gt;
__matmul__          __missing__         __mod__             __module__          &lt;br /&gt;
__mro__             __mul__             __name__            __ne__              &lt;br /&gt;
__neg__             __new__             __next__            __objclass__        &lt;br /&gt;
__or__              __pos__             __pow__             __prepare__         &lt;br /&gt;
__qualname__        __radd__            __rand__            __rdivmod__         &lt;br /&gt;
__repr__            __reversed__        __rfloordiv__       __rlshift__         &lt;br /&gt;
__rmatmul__         __rmod__            __rmul__            __ror__             &lt;br /&gt;
__round__           __rpow__            __rrshift__         __rshift__          &lt;br /&gt;
__rsub__            __rtruediv__        __rxor__            __self__            &lt;br /&gt;
__set__             __setattr__         __setitem__         __slots__           &lt;br /&gt;
__str__             __sub__             __subclasscheck__   __traceback__       &lt;br /&gt;
__truediv__         __trunc__           __weakref__         __xor__  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;grep -ho -e '__[a-z]*__' x.txt | sort -u | xargs -n 4 printf '%-20s%-20s%-20s%-20s\n'&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==2.7과 3.6 동시에 쓰기==&lt;br /&gt;
[https://conda.io/docs/user-guide/tasks/manage-python.html 참고링크] [https://conda.io/docs/user-guide/tasks/manage-environments.html#activate-env 참고링크2]&lt;br /&gt;
&lt;br /&gt;
아래로 만들고,&lt;br /&gt;
 conda create -n py36 python=3.6 anaconda&lt;br /&gt;
아래로 activate&lt;br /&gt;
 source activate py36&lt;br /&gt;
&lt;br /&gt;
환경 리스트&lt;br /&gt;
 conda env list&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;code&amp;gt;__call__&amp;lt;/code&amp;gt; 클래스로도, 함수로도 쓸 수 있음.==&lt;br /&gt;
&amp;lt;pre&amp;gt;The first is used to initialise newly created object, and receives arguments used to do that:&lt;br /&gt;
&lt;br /&gt;
    class Foo:&lt;br /&gt;
        def __init__(self, a, b, c):&lt;br /&gt;
            # ...&lt;br /&gt;
&lt;br /&gt;
    x = Foo(1, 2, 3) # __init__&lt;br /&gt;
&lt;br /&gt;
The second implements function call operator.&lt;br /&gt;
&lt;br /&gt;
    class Foo:&lt;br /&gt;
        def __call__(self, a, b, c):&lt;br /&gt;
            # ...&lt;br /&gt;
&lt;br /&gt;
    x = Foo()&lt;br /&gt;
    x(1, 2, 3) # __call__&amp;lt;/pre&amp;gt;&lt;br /&gt;
[https://stackoverflow.com/a/9663601/766330]&lt;br /&gt;
&lt;br /&gt;
==jupyter notebook matplotlib on OSX==&lt;br /&gt;
Insert below code at the head of the note.&lt;br /&gt;
 import matplotlib as mpl &lt;br /&gt;
 mpl.use('TkAgg')&lt;br /&gt;
[https://stackoverflow.com/questions/21784641/installation-issue-with-matplotlib-python#comment56913201_21789908]&lt;br /&gt;
&lt;br /&gt;
==한글외 문자 제거==&lt;br /&gt;
&amp;lt;pre&amp;gt;hangul = re.compile('[^ ㄱ-ㅣ가-힣]+') # 한글과 띄어쓰기를 제외한 모든 글자&lt;br /&gt;
# hangul = re.compile('[^ \u3131-\u3163\uac00-\ud7a3]+')  # 위와 동일&lt;br /&gt;
result = hangul.sub('', target_text) # 한글과 띄어쓰기를 제외한 모든 부분을 제거&amp;lt;/pre&amp;gt;&lt;br /&gt;
http://jokergt.tistory.com/52&lt;br /&gt;
&lt;br /&gt;
==ternary operator==&lt;br /&gt;
 a if condition else b&lt;br /&gt;
[https://stackoverflow.com/a/394814/766330]&lt;br /&gt;
&lt;br /&gt;
==print color to terminal stdout==&lt;br /&gt;
 print('\x1b[6;30;42m' + 'Success!' + '\x1b[0m')&lt;br /&gt;
[https://stackoverflow.com/a/21786287/766330]&lt;br /&gt;
&lt;br /&gt;
ansi&lt;br /&gt;
&amp;lt;pre&amp;gt;RED = '\033[91m'&lt;br /&gt;
GREEN = '\033[92m'&lt;br /&gt;
YELLOW = '\033[93m'&lt;br /&gt;
LIGHT_PURPLE = '\033[94m'&lt;br /&gt;
PURPLE = '\033[95m'&lt;br /&gt;
END = '\033[0m'&amp;lt;/pre&amp;gt;&lt;br /&gt;
코드로도 된다고 하는데 그럴필요까지야.&lt;br /&gt;
&amp;lt;pre&amp;gt;from __future__ import print_function&lt;br /&gt;
from colorprint import *&lt;br /&gt;
&lt;br /&gt;
print('Hello', 'world', color='blue', end='', sep=', ')&lt;br /&gt;
print('!', color='red', format=['bold', ‘blink'])&amp;lt;/pre&amp;gt;&lt;br /&gt;
[https://stackoverflow.com/a/31310228/766330]&lt;br /&gt;
&lt;br /&gt;
==filter==&lt;br /&gt;
 filter(None, list)&lt;br /&gt;
None이나 \(0\)을 제외하게 된다.[https://stackoverflow.com/q/16096754/766330]&lt;br /&gt;
&lt;br /&gt;
==ipython (jupyter notebook) ==&lt;br /&gt;
===load a file===&lt;br /&gt;
 %load f.py&lt;br /&gt;
===save current cell to a file===&lt;br /&gt;
 %%writefile f.py&lt;br /&gt;
===shell command===&lt;br /&gt;
 !ls&lt;br /&gt;
 !cat “file” &lt;br /&gt;
[https://stackoverflow.com/questions/21034373/how-to-load-edit-run-save-text-files-py-into-an-ipython-notebook-cell]&lt;br /&gt;
&lt;br /&gt;
==Multiple input stream==&lt;br /&gt;
 import fileinput&lt;br /&gt;
 for line in fileinput.input():&lt;br /&gt;
     process(line)&lt;br /&gt;
https://docs.python.org/2/library/fileinput.html#module-fileinput&lt;br /&gt;
&lt;br /&gt;
==file position==&lt;br /&gt;
 def skip_comments(f):&lt;br /&gt;
     while True:&lt;br /&gt;
         pos = f.tell()&lt;br /&gt;
         line = f.readline().strip()&lt;br /&gt;
         if not line.startswith('#'):&lt;br /&gt;
             f.seek(pos) #rewind&lt;br /&gt;
             break&lt;br /&gt;
{{c|tell}}로 현재 위치를 얻고, {{c|seek}}로 set.&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; f = open('workfile', 'r+')&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; f.write('0123456789abcdef')&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; f.seek(5)      # Go to the 6th byte in the file&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; f.read(1)&lt;br /&gt;
 '5'&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; f.seek(-3, 2)  # Go to the 3rd byte before the end&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; f.read(1)&lt;br /&gt;
 'd'&lt;br /&gt;
https://docs.python.org/2/tutorial/inputoutput.html#methods-of-file-objects&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Interactive session detection==&lt;br /&gt;
 sys.stdin.isatty()&lt;br /&gt;
http://stackoverflow.com/a/7576567/766330&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Temporary file or directory==&lt;br /&gt;
 tempfile.TemporaryFile(&amp;lt;nowiki&amp;gt;[mode='w+b'[, bufsize=-1[, suffix=''[, prefix='tmp'[, dir=None]]]]]&amp;lt;/nowiki&amp;gt;) [https://docs.python.org/2/library/tempfile.html#tempfile.TemporaryFile]&lt;br /&gt;
임시파일을 만든다. 아래를 쓸것.&lt;br /&gt;
 tempfile.NamedTemporaryFile(&amp;lt;nowiki&amp;gt;[mode='w+b'[, bufsize=-1[, suffix=''[, prefix='tmp'[, dir=None[, delete=True]]]]]]&amp;lt;/nowiki&amp;gt;) [https://docs.python.org/2/library/tempfile.html#tempfile.NamedTemporaryFile]&lt;br /&gt;
위와 동일하나 visible name의 파일을 만든다. 이름은 반환값의 name속성으로 받을 수 있다.&lt;br /&gt;
&amp;lt;br&amp;gt;주의할점은, {{c|delete}}속성의 기본값이 {{c|True}}여서 쓰여진 후 곧바로 지워진다. 계속 쓰려면 해당속성을 {{c|False}}로 해야 한다.&lt;br /&gt;
 tempfile.mkdtemp(&amp;lt;nowiki&amp;gt;[suffix=''[, prefix='tmp'[, dir=None]]]&amp;lt;/nowiki&amp;gt;) [https://docs.python.org/2/library/tempfile.html#tempfile.mkdtemp]&lt;br /&gt;
임시디렉토리를 만들고, 자동으로 지우지 않는다.&lt;br /&gt;
&lt;br /&gt;
==Check syntax without running==&lt;br /&gt;
 python -m py_compile script.py&lt;br /&gt;
http://stackoverflow.com/a/8437597/766330&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Time==&lt;br /&gt;
===current time===&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; import time&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; time.time()&lt;br /&gt;
 1491792653.410371&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; import datetime&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; datetime.datetime.fromtimestamp(time.time()).strftime('%Y-%m-%d %H:%M:%S')&lt;br /&gt;
 '2017-04-10 11:51:17'  &lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; datetime.datetime.utcnow()&lt;br /&gt;
 datetime.datetime(2017, 4, 10, 2, 51, 34, 356682)&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; datetime.datetime.now()&lt;br /&gt;
 datetime.datetime(2017, 4, 10, 11, 51, 36, 572681)&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; datetime.datetime.now().strftime(&amp;quot;%A, %d. %B %Y %I:%M%p&amp;quot;)&lt;br /&gt;
 'Monday, 10. April 2017 11:51AM'&lt;br /&gt;
[http://stackoverflow.com/questions/13890935/does-pythons-time-time-return-the-local-or-utc-timestamp]&amp;lt;br&amp;gt;&lt;br /&gt;
if you want UTC, use &amp;lt;c&amp;gt;utcfromtimestamp&amp;lt;/c&amp;gt; instead of &amp;lt;c&amp;gt;fromtimestamp&amp;lt;/c&amp;gt; [https://stackoverflow.com/a/37188257/766330]&lt;br /&gt;
&lt;br /&gt;
===yesterday===&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; from datetime import date, timedelta&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; yesterday = date.today() - timedelta(1)&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; print yesterday.strftime('%m%d%y')&lt;br /&gt;
 '110909'&lt;br /&gt;
[http://stackoverflow.com/a/1712127/766330]&lt;br /&gt;
&lt;br /&gt;
[https://docs.python.org/2/library/datetime.html#strftime-and-strptime-behavior strftime format manual]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==String replace==&lt;br /&gt;
==={{c|str.replace}}===&lt;br /&gt;
 str.replace(old, new[, max]) [https://www.tutorialspoint.com/python/string_replace.htm]&lt;br /&gt;
==={{c|re.sub}}===&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt;&amp;lt;nowiki&amp;gt; re.sub(r'def\s+([a-zA-Z_][a-zA-Z_0-9]*)\s*\(\s*\):',&lt;br /&gt;
 ...        r'static PyObject*\npy_\1(void)\n{',&lt;br /&gt;
 ...        'def myfunc():')&lt;br /&gt;
 'static PyObject*\npy_myfunc(void)\n{'&amp;lt;/nowiki&amp;gt; [https://docs.python.org/2/library/re.html#re.sub ]&lt;br /&gt;
commented version example&lt;br /&gt;
 line = re.sub(r&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
   (?x) # Use free-spacing mode.&lt;br /&gt;
   &amp;lt;    # Match a literal '&amp;lt;'&lt;br /&gt;
   /?   # Optionally match a '/'&lt;br /&gt;
   \[   # Match a literal '['&lt;br /&gt;
   \d+  # Match one or more digits&lt;br /&gt;
   &amp;gt;    # Match a literal '&amp;gt;'&lt;br /&gt;
   &amp;quot;&amp;quot;&amp;quot;, &amp;quot;&amp;quot;, line) [http://stackoverflow.com/a/5658439/766330]&lt;br /&gt;
&lt;br /&gt;
=={{c|is}} and {{c|&amp;lt;nowiki&amp;gt;==&amp;lt;/nowiki&amp;gt;}}==&lt;br /&gt;
{{c|is}} is identity testing, {{c|&amp;lt;nowiki&amp;gt;==&amp;lt;/nowiki&amp;gt;}} is equality testing. what happens in your code would be emulated in the interpreter like this:&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; a = 'pub'&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; b = &amp;lt;nowiki&amp;gt;''&amp;lt;/nowiki&amp;gt;.join(['p', 'u', 'b'])&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; a == b&lt;br /&gt;
 True&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; a is b&lt;br /&gt;
 False&lt;br /&gt;
[http://stackoverflow.com/a/1504742/766330]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Access index in {{c|for}} loop==&lt;br /&gt;
{{c|enumerate}}&lt;br /&gt;
 for idx, val in enumerate(ints):&lt;br /&gt;
    print(idx, val)&lt;br /&gt;
[http://stackoverflow.com/a/522578/766330]&lt;br /&gt;
&lt;br /&gt;
==Max integer==&lt;br /&gt;
 sys.maxint&lt;br /&gt;
[http://stackoverflow.com/a/7604981/766330]&lt;br /&gt;
&lt;br /&gt;
python 3에서는 안된다고 한다. &amp;lt;del&amp;gt;어차피 안쓰니 상관없지만&amp;lt;/del&amp;gt; 그래서 다음과 같이 한다고.&lt;br /&gt;
&amp;lt;pre&amp;gt;import sys&lt;br /&gt;
max = sys.maxsize&lt;br /&gt;
min = -sys.maxsize&amp;lt;/pre&amp;gt;&lt;br /&gt;
[https://stackoverflow.com/a/42544543/766330]&lt;br /&gt;
&lt;br /&gt;
다음도 간단하고 좋은 것 같다. 2,3에서 모두 동작&lt;br /&gt;
 float('inf')&lt;br /&gt;
 float('-inf')&lt;br /&gt;
[https://stackoverflow.com/a/37300370/766330]&lt;br /&gt;
&lt;br /&gt;
==Argument parsing==&lt;br /&gt;
use [https://docs.python.org/2.7/library/argparse.html#action argparse]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=={{c|range}} by step==&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; step = .1&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; N = 10     # number of data points&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; [ x / pow(step, -1) for x in range(0, N + 1) ]&lt;br /&gt;
 [0.0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0]&lt;br /&gt;
[http://stackoverflow.com/a/41079203/766330]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==File existence==&lt;br /&gt;
 os.path.exists(file_path)&lt;br /&gt;
[http://stackoverflow.com/a/82846/766330] [https://docs.python.org/2/library/os.path.html#os.path.exists]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Define source code encoding==&lt;br /&gt;
첫째나 둘째줄에,&lt;br /&gt;
 # coding=&amp;lt;encoding name&amp;gt;&lt;br /&gt;
보통 에디터들은 다음 형식을 이해함.&lt;br /&gt;
 #!/usr/bin/python&lt;br /&gt;
 # -*- coding: &amp;lt;encoding name&amp;gt; -*-&lt;br /&gt;
혹은&lt;br /&gt;
 #!/usr/bin/python&lt;br /&gt;
 # vim: set fileencoding=&amp;lt;encoding name&amp;gt; :&lt;br /&gt;
정확히는, 첫째나 둘째줄이 아래 정규식에 맞아야 함.&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;^[ \t\v]*#.*?coding[:=][ \t]*([-_.a-zA-Z0-9]+)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
https://www.python.org/dev/peps/pep-0263/&lt;br /&gt;
&lt;br /&gt;
==encoding==&lt;br /&gt;
기본적으로 파이썬은 유니코드를 사용한다. encode/decode할 때, encode하면 유니코드로부터 다른 인코딩으로 가고, decode하면 다른 인코딩으로부터 유니코드로 온다는 얘기. 그래서 unicode().decode()는 매우 쓸데가 없다. [https://stackoverflow.com/a/449281/766330] 보통은 기본 인코딩을 utf8로 쓰므로 파이썬 코드상에서 가끔 한글이 이상한 동작을 보이면 다 &amp;lt;code&amp;gt;decode('utf-8')&amp;lt;/code&amp;gt;붙여주면 된다. 하이픈 없이 utf8이라고 써도 된다. &lt;br /&gt;
&lt;br /&gt;
주의할점은,  encode를 부르면 암묵적으로 decode가 먼저 불린다. 따라서 (쓸일도 거의 없지만) encode할 때는 원래 문자열을 decode해주는 것이 안전하다. 안해주면 ascii codec으로 디코딩을 먼저 시도하는데, 한글의 경우는 잘 안되므로 &amp;lt;code&amp;gt;UnicodeEncodeError: 'ascii' codec can't encode characters in position blabla: ordinal not in range(128)&amp;lt;/code&amp;gt; 요런 친숙한(?) 에러가 난다. 일단 유니코드로 다 바꾸고 다른 인코딩으로 넘어간다고 생각하면 됨. [https://stackoverflow.com/questions/10561923/unicodedecodeerror-ascii-codec-cant-decode-byte-0xef-in-position-1]&lt;br /&gt;
&lt;br /&gt;
스트링format에서, %s로 유니코드를 받으려면 format string도 unicode여야 한다. &amp;lt;code&amp;gt;u'%s'&amp;lt;/code&amp;gt; 이렇게. 그래서 섞어 써야 할 때는, ①format string을 놔두고, 유니코드를 utf8로 디코드 해서 넘기든지, ② format string을 unicode로 주고 utf8문자열에 죄다 &amp;lt;code&amp;gt;decode('utf-8')&amp;lt;/code&amp;gt;을 붙인다.&lt;br /&gt;
&lt;br /&gt;
시간이 너무 남아돌면 기본 매뉴얼[https://docs.python.org/2/howto/unicode.html]을 훑어본다.&lt;br /&gt;
&lt;br /&gt;
[https://stackoverflow.com/a/492711/766330 stackoverflow]에 훌륭한 규칙이 나옴: A rule of thumb is: Always use Unicode internally. Decode what you receive, and encode what you send. 받는건 무조건 decode, 내보내는건 무조건 encode. 내부는 유니코드로 고정이기 때문.&lt;br /&gt;
&lt;br /&gt;
==Reading another encoding from a file==&lt;br /&gt;
&amp;lt;shl&amp;gt;&lt;br /&gt;
import codecs&lt;br /&gt;
f = codecs.open('unicode.rst', encoding='utf-8')&lt;br /&gt;
for line in f:&lt;br /&gt;
    print repr(line)&lt;br /&gt;
&amp;lt;/shl&amp;gt;&lt;br /&gt;
https://stackoverflow.com/a/147756/766330&lt;br /&gt;
&lt;br /&gt;
=={{c|randint}}==&lt;br /&gt;
 from random import randint&lt;br /&gt;
 print(randint(0,9))&lt;br /&gt;
0~9 inclusive&amp;lt;br&amp;gt;&lt;br /&gt;
https://docs.python.org/2/library/random.html#random.randint &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=={{c|groupby}} example==&lt;br /&gt;
 from itertools import groupby&lt;br /&gt;
 &lt;br /&gt;
 things = [(&amp;quot;animal&amp;quot;, &amp;quot;bear&amp;quot;), (&amp;quot;animal&amp;quot;, &amp;quot;duck&amp;quot;), (&amp;quot;plant&amp;quot;, &amp;quot;cactus&amp;quot;), (&amp;quot;vehicle&amp;quot;, &amp;quot;speed boat&amp;quot;), (&amp;quot;vehicle&amp;quot;, &amp;quot;school bus&amp;quot;)]&lt;br /&gt;
 &lt;br /&gt;
 for key, group in groupby(things, lambda x: x[0]):&lt;br /&gt;
     for thing in group:&lt;br /&gt;
         print &amp;quot;A %s is a %s.&amp;quot; % (thing[1], key)&lt;br /&gt;
     print &amp;quot; &amp;quot;&lt;br /&gt;
output&lt;br /&gt;
 A bear is a animal.&lt;br /&gt;
 A duck is a animal.&lt;br /&gt;
 &lt;br /&gt;
 A cactus is a plant.&lt;br /&gt;
 &lt;br /&gt;
 A speed boat is a vehicle.&lt;br /&gt;
 A school bus is a vehicle.&lt;br /&gt;
 &lt;br /&gt;
http://stackoverflow.com/a/7286/766330&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Suppress scientific notation==&lt;br /&gt;
use {{c|%f}}&lt;br /&gt;
 '%f' % (x/y)&lt;br /&gt;
http://stackoverflow.com/a/658777/766330&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==To ignore exception==&lt;br /&gt;
 except:&lt;br /&gt;
     pass&lt;br /&gt;
http://stackoverflow.com/a/574734/766330&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Delete items from a dictionary while iterating over it==&lt;br /&gt;
iteration중에는 지울 수 없다. 두번 돌아야 함.&lt;br /&gt;
 remove = [k for k in mydict if k == val]&lt;br /&gt;
 for k in remove: del mydict[k]&lt;br /&gt;
http://stackoverflow.com/a/5385196/766330&lt;br /&gt;
&lt;br /&gt;
==Print without newline==&lt;br /&gt;
 import sys&lt;br /&gt;
 sys.stdout.write('.')&lt;br /&gt;
http://stackoverflow.com/a/493399/766330&lt;br /&gt;
&lt;br /&gt;
=={{c|if else}} in list comprehension==&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[ unicode(x.strip()) if x is not None else '' for x in row ]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
http://stackoverflow.com/a/4260304/766330&lt;br /&gt;
&lt;br /&gt;
==filtering a dictionary according to an arbitrary condition==&lt;br /&gt;
use dict comprehension&lt;br /&gt;
 {k: v for k, v in points.iteritems() if v[0] &amp;lt; 5 and v[1] &amp;lt; 5}&lt;br /&gt;
https://stackoverflow.com/a/16589453/766330&lt;br /&gt;
&lt;br /&gt;
==Executing multi-line statements within PDB==&lt;br /&gt;
 (pdb) &amp;lt;span style='color:red'&amp;gt;!import code; code.interact(local=vars()) &amp;lt;/span&amp;gt;&lt;br /&gt;
 Python 2.6.5 (r265:79063, Apr 16 2010, 13:57:41) &lt;br /&gt;
 [GCC 4.4.3] on linux2&lt;br /&gt;
 Type &amp;quot;help&amp;quot;, &amp;quot;copyright&amp;quot;, &amp;quot;credits&amp;quot; or &amp;quot;license&amp;quot; for more information.&lt;br /&gt;
 (InteractiveConsole)&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; &lt;br /&gt;
https://stackoverflow.com/a/8387484/766330&lt;br /&gt;
&lt;br /&gt;
==Converting a IPython Notebook into a Python file via commandline==&lt;br /&gt;
 $ jupyter nbconvert --to script [YOUR_NOTEBOOK].ipynb&lt;br /&gt;
or in ipython notebook&lt;br /&gt;
 !jupyter nbconvert --to script [YOUR_NOTEBOOK].ipynb&lt;br /&gt;
https://stackoverflow.com/a/19779226/766330&lt;br /&gt;
&lt;br /&gt;
==Write float(or int) to a binary file==&lt;br /&gt;
&amp;lt;pre&amp;gt;import struct&lt;br /&gt;
s = struct.pack('f'*len(floats), *floats)&lt;br /&gt;
f = open('file','wb')&lt;br /&gt;
f.write(s)&lt;br /&gt;
f.close()&amp;lt;/pre&amp;gt;&lt;br /&gt;
To read this from [[C]], refer [http://iph.kr/wiki/index.php/C#Read.2Fwrite_float_binary here]&lt;br /&gt;
&lt;br /&gt;
https://stackoverflow.com/a/807881/766330&lt;br /&gt;
&lt;br /&gt;
==cross reference between files==&lt;br /&gt;
Use following statements according to appropriate order&lt;br /&gt;
 from __main__ import *&lt;br /&gt;
&lt;br /&gt;
https://stackoverflow.com/a/16068078/766330&lt;br /&gt;
&lt;br /&gt;
==pdf file merge==&lt;br /&gt;
  from PyPDF2 import PdfMerger&lt;br /&gt;
  &lt;br /&gt;
  pdfs = ['file1.pdf', 'file2.pdf', 'file3.pdf', 'file4.pdf']&lt;br /&gt;
  &lt;br /&gt;
  merger = PdfMerger()&lt;br /&gt;
  &lt;br /&gt;
  for pdf in pdfs:&lt;br /&gt;
      merger.append(pdf)&lt;br /&gt;
  &lt;br /&gt;
  merger.write(&amp;quot;result.pdf&amp;quot;)&lt;br /&gt;
  merger.close()&lt;br /&gt;
&lt;br /&gt;
page range를 줄 수도 있다고 함. 별로 직관적이지는 않아보임&lt;br /&gt;
&lt;br /&gt;
그냥 파일 여러개를 합하는것을 명령어로 할 수 있는 것:&lt;br /&gt;
  python -m fitz join -o result.pdf file1.pdf file2.pdf file3.pdf&lt;br /&gt;
&lt;br /&gt;
PyMuPdf[https://github.com/pymupdf/PyMuPDF]참고&lt;br /&gt;
&lt;br /&gt;
[https://stackoverflow.com/a/37945454/766330]&lt;br /&gt;
&lt;br /&gt;
==images to pdf==&lt;br /&gt;
  image_list = [im_2, im_3, im_4]&lt;br /&gt;
  im_1.save(r'C:\Users\Ron\Desktop\Test\my_images.pdf', save_all=True, append_images=image_list)&lt;br /&gt;
&lt;br /&gt;
PIL.Image에 이미 기능이 있었음.&lt;br /&gt;
[https://datatofish.com/images-to-pdf-python/]&lt;br /&gt;
&lt;br /&gt;
==natural sort==&lt;br /&gt;
use &amp;lt;kbd&amp;gt;natsorted&amp;lt;/kbd&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; from natsort import natsorted, ns&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; x = ['Elm11', 'Elm12', 'Elm2', 'elm0', 'elm1', 'elm10', 'elm13', 'elm9']&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; natsorted(x, key=lambda y: y.lower())&lt;br /&gt;
['elm0', 'elm1', 'Elm2', 'elm9', 'elm10', 'Elm11', 'Elm12', 'elm13']&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; natsorted(x, alg=ns.IGNORECASE)  # or alg=ns.IC&lt;br /&gt;
['elm0', 'elm1', 'Elm2', 'elm9', 'elm10', 'Elm11', 'Elm12', 'elm13']&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
[https://stackoverflow.com/a/18415320/766330]&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
		
	</entry>
	<entry>
		<id>http://samediff.kr/wiki/index.php?title=Python&amp;diff=16217</id>
		<title>Python</title>
		<link rel="alternate" type="text/html" href="http://samediff.kr/wiki/index.php?title=Python&amp;diff=16217"/>
		<updated>2023-02-20T04:09:03Z</updated>

		<summary type="html">&lt;p&gt;Admin: /* pdf file merge */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== pdb howto ==&lt;br /&gt;
[https://realpython.com/python-debugging-pdb/]&lt;br /&gt;
&lt;br /&gt;
==start debugger automatically on error==&lt;br /&gt;
 python -m pdb -c continue myscript.py&lt;br /&gt;
[https://stackoverflow.com/a/2438834/766330]&lt;br /&gt;
&lt;br /&gt;
==print all variables==&lt;br /&gt;
 locals()&lt;br /&gt;
[https://stackoverflow.com/questions/21961693/how-to-print-all-variables-values-when-debugging-python-with-pdb-without-specif]&lt;br /&gt;
&lt;br /&gt;
==current time as str==&lt;br /&gt;
 import datetime&lt;br /&gt;
 cur = datetime.datetime.now()&lt;br /&gt;
 cur.strftime('%m%d%H%M')&lt;br /&gt;
[https://tecadmin.net/get-current-date-time-python/]&lt;br /&gt;
&lt;br /&gt;
==simple line plots==&lt;br /&gt;
 plt.style.use('seaborn-whitegrid')&lt;br /&gt;
[https://jakevdp.github.io/PythonDataScienceHandbook/04.01-simple-line-plots.html]&lt;br /&gt;
&lt;br /&gt;
==flatten all lists recursively==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
li=[[1,[[2]],[[[3]]]],[['4'],{5:5}]]&lt;br /&gt;
flatten=lambda l: sum(map(flatten,l),[]) if isinstance(l,list) else [l]&lt;br /&gt;
print flatten(li)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
[https://stackoverflow.com/a/12474246/766330]&lt;br /&gt;
&lt;br /&gt;
다음과 같은 기묘한 속성 때문이다&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; [] + [1]&lt;br /&gt;
[1]&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; sum([[1]], [2])&lt;br /&gt;
[2, 1]&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; sum([[1]], [])&lt;br /&gt;
[1]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
다음을 실행하면,&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
depth = 0&lt;br /&gt;
def flatten_(x):&lt;br /&gt;
    global depth&lt;br /&gt;
    depth += 1&lt;br /&gt;
    r = None&lt;br /&gt;
    if isinstance(x, list):&lt;br /&gt;
        print('&amp;gt;'*depth, 'list:', x)&lt;br /&gt;
        y = sum(map(flatten_,x), [])&lt;br /&gt;
        r = y&lt;br /&gt;
    else:&lt;br /&gt;
        print('&amp;gt;'*depth, 'not list:',x)&lt;br /&gt;
        r = [x]&lt;br /&gt;
    print('&amp;lt;'*depth, 'returning', r)&lt;br /&gt;
    depth -= 1&lt;br /&gt;
    return r&lt;br /&gt;
    &lt;br /&gt;
li=[[1,[[2]],[[[3]]]],[['4'],{5:5}]]&lt;br /&gt;
flatten_(li)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
결과는,&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;gt; list: [[1, [[2]], [[[3]]]], [['4'], {5: 5}]]&lt;br /&gt;
&amp;gt;&amp;gt; list: [1, [[2]], [[[3]]]]&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; not list: 1&lt;br /&gt;
&amp;lt;&amp;lt;&amp;lt; returning [1]&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; list: [[2]]&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt;&amp;gt; list: [2]&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; not list: 2&lt;br /&gt;
&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt; returning [2]&lt;br /&gt;
&amp;lt;&amp;lt;&amp;lt;&amp;lt; returning [2]&lt;br /&gt;
&amp;lt;&amp;lt;&amp;lt; returning [2]&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; list: [[[3]]]&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt;&amp;gt; list: [[3]]&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; list: [3]&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; not list: 3&lt;br /&gt;
&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt; returning [3]&lt;br /&gt;
&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt; returning [3]&lt;br /&gt;
&amp;lt;&amp;lt;&amp;lt;&amp;lt; returning [3]&lt;br /&gt;
&amp;lt;&amp;lt;&amp;lt; returning [3]&lt;br /&gt;
&amp;lt;&amp;lt; returning [1, 2, 3]&lt;br /&gt;
&amp;gt;&amp;gt; list: [['4'], {5: 5}]&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; list: ['4']&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt;&amp;gt; not list: 4&lt;br /&gt;
&amp;lt;&amp;lt;&amp;lt;&amp;lt; returning ['4']&lt;br /&gt;
&amp;lt;&amp;lt;&amp;lt; returning ['4']&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; not list: {5: 5}&lt;br /&gt;
&amp;lt;&amp;lt;&amp;lt; returning [{5: 5}]&lt;br /&gt;
&amp;lt;&amp;lt; returning ['4', {5: 5}]&lt;br /&gt;
&amp;lt; returning [1, 2, 3, '4', {5: 5}]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==재정의==&lt;br /&gt;
[https://docs.python.org/3/reference/datamodel.html#object.__int__ 이 페이지]에 거의 다 있는듯함.&amp;lt;br&amp;gt;&lt;br /&gt;
나열하면 다음과 같다.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
__abs__             __add__             __aenter__          __aexit__           &lt;br /&gt;
__aiter__           __and__             __anext__           __annotations__     &lt;br /&gt;
__await__           __bases__           __bool__            __bytes__           &lt;br /&gt;
__call__            __ceil__            __class__           __classcell__       &lt;br /&gt;
__closure__         __code__            __complex__         __contains__        &lt;br /&gt;
__defaults__        __del__             __delattr__         __delete__          &lt;br /&gt;
__delitem__         __dict__            __dir__             __divmod__          &lt;br /&gt;
__doc__             __enter__           __eq__              __exit__            &lt;br /&gt;
__file__            __float__           __floor__           __floordiv__        &lt;br /&gt;
__format__          __func__            __future__          __ge__              &lt;br /&gt;
__get__             __getattr__         __getattribute__    __getitem__         &lt;br /&gt;
__globals__         __gt__              __hash__            __iadd__            &lt;br /&gt;
__iand__            __ifloordiv__       __ilshift__         __imatmul__         &lt;br /&gt;
__imod__            __import__          __imul__            __index__           &lt;br /&gt;
__init__            __instancecheck__   __int__             __invert__          &lt;br /&gt;
__ior__             __ipow__            __irshift__         __isub__            &lt;br /&gt;
__iter__            __itruediv__        __ixor__            __kwdefaults__      &lt;br /&gt;
__le__              __len__             __lshift__          __lt__              &lt;br /&gt;
__matmul__          __missing__         __mod__             __module__          &lt;br /&gt;
__mro__             __mul__             __name__            __ne__              &lt;br /&gt;
__neg__             __new__             __next__            __objclass__        &lt;br /&gt;
__or__              __pos__             __pow__             __prepare__         &lt;br /&gt;
__qualname__        __radd__            __rand__            __rdivmod__         &lt;br /&gt;
__repr__            __reversed__        __rfloordiv__       __rlshift__         &lt;br /&gt;
__rmatmul__         __rmod__            __rmul__            __ror__             &lt;br /&gt;
__round__           __rpow__            __rrshift__         __rshift__          &lt;br /&gt;
__rsub__            __rtruediv__        __rxor__            __self__            &lt;br /&gt;
__set__             __setattr__         __setitem__         __slots__           &lt;br /&gt;
__str__             __sub__             __subclasscheck__   __traceback__       &lt;br /&gt;
__truediv__         __trunc__           __weakref__         __xor__  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;grep -ho -e '__[a-z]*__' x.txt | sort -u | xargs -n 4 printf '%-20s%-20s%-20s%-20s\n'&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==2.7과 3.6 동시에 쓰기==&lt;br /&gt;
[https://conda.io/docs/user-guide/tasks/manage-python.html 참고링크] [https://conda.io/docs/user-guide/tasks/manage-environments.html#activate-env 참고링크2]&lt;br /&gt;
&lt;br /&gt;
아래로 만들고,&lt;br /&gt;
 conda create -n py36 python=3.6 anaconda&lt;br /&gt;
아래로 activate&lt;br /&gt;
 source activate py36&lt;br /&gt;
&lt;br /&gt;
환경 리스트&lt;br /&gt;
 conda env list&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;code&amp;gt;__call__&amp;lt;/code&amp;gt; 클래스로도, 함수로도 쓸 수 있음.==&lt;br /&gt;
&amp;lt;pre&amp;gt;The first is used to initialise newly created object, and receives arguments used to do that:&lt;br /&gt;
&lt;br /&gt;
    class Foo:&lt;br /&gt;
        def __init__(self, a, b, c):&lt;br /&gt;
            # ...&lt;br /&gt;
&lt;br /&gt;
    x = Foo(1, 2, 3) # __init__&lt;br /&gt;
&lt;br /&gt;
The second implements function call operator.&lt;br /&gt;
&lt;br /&gt;
    class Foo:&lt;br /&gt;
        def __call__(self, a, b, c):&lt;br /&gt;
            # ...&lt;br /&gt;
&lt;br /&gt;
    x = Foo()&lt;br /&gt;
    x(1, 2, 3) # __call__&amp;lt;/pre&amp;gt;&lt;br /&gt;
[https://stackoverflow.com/a/9663601/766330]&lt;br /&gt;
&lt;br /&gt;
==jupyter notebook matplotlib on OSX==&lt;br /&gt;
Insert below code at the head of the note.&lt;br /&gt;
 import matplotlib as mpl &lt;br /&gt;
 mpl.use('TkAgg')&lt;br /&gt;
[https://stackoverflow.com/questions/21784641/installation-issue-with-matplotlib-python#comment56913201_21789908]&lt;br /&gt;
&lt;br /&gt;
==한글외 문자 제거==&lt;br /&gt;
&amp;lt;pre&amp;gt;hangul = re.compile('[^ ㄱ-ㅣ가-힣]+') # 한글과 띄어쓰기를 제외한 모든 글자&lt;br /&gt;
# hangul = re.compile('[^ \u3131-\u3163\uac00-\ud7a3]+')  # 위와 동일&lt;br /&gt;
result = hangul.sub('', target_text) # 한글과 띄어쓰기를 제외한 모든 부분을 제거&amp;lt;/pre&amp;gt;&lt;br /&gt;
http://jokergt.tistory.com/52&lt;br /&gt;
&lt;br /&gt;
==ternary operator==&lt;br /&gt;
 a if condition else b&lt;br /&gt;
[https://stackoverflow.com/a/394814/766330]&lt;br /&gt;
&lt;br /&gt;
==print color to terminal stdout==&lt;br /&gt;
 print('\x1b[6;30;42m' + 'Success!' + '\x1b[0m')&lt;br /&gt;
[https://stackoverflow.com/a/21786287/766330]&lt;br /&gt;
&lt;br /&gt;
ansi&lt;br /&gt;
&amp;lt;pre&amp;gt;RED = '\033[91m'&lt;br /&gt;
GREEN = '\033[92m'&lt;br /&gt;
YELLOW = '\033[93m'&lt;br /&gt;
LIGHT_PURPLE = '\033[94m'&lt;br /&gt;
PURPLE = '\033[95m'&lt;br /&gt;
END = '\033[0m'&amp;lt;/pre&amp;gt;&lt;br /&gt;
코드로도 된다고 하는데 그럴필요까지야.&lt;br /&gt;
&amp;lt;pre&amp;gt;from __future__ import print_function&lt;br /&gt;
from colorprint import *&lt;br /&gt;
&lt;br /&gt;
print('Hello', 'world', color='blue', end='', sep=', ')&lt;br /&gt;
print('!', color='red', format=['bold', ‘blink'])&amp;lt;/pre&amp;gt;&lt;br /&gt;
[https://stackoverflow.com/a/31310228/766330]&lt;br /&gt;
&lt;br /&gt;
==filter==&lt;br /&gt;
 filter(None, list)&lt;br /&gt;
None이나 \(0\)을 제외하게 된다.[https://stackoverflow.com/q/16096754/766330]&lt;br /&gt;
&lt;br /&gt;
==ipython (jupyter notebook) ==&lt;br /&gt;
===load a file===&lt;br /&gt;
 %load f.py&lt;br /&gt;
===save current cell to a file===&lt;br /&gt;
 %%writefile f.py&lt;br /&gt;
===shell command===&lt;br /&gt;
 !ls&lt;br /&gt;
 !cat “file” &lt;br /&gt;
[https://stackoverflow.com/questions/21034373/how-to-load-edit-run-save-text-files-py-into-an-ipython-notebook-cell]&lt;br /&gt;
&lt;br /&gt;
==Multiple input stream==&lt;br /&gt;
 import fileinput&lt;br /&gt;
 for line in fileinput.input():&lt;br /&gt;
     process(line)&lt;br /&gt;
https://docs.python.org/2/library/fileinput.html#module-fileinput&lt;br /&gt;
&lt;br /&gt;
==file position==&lt;br /&gt;
 def skip_comments(f):&lt;br /&gt;
     while True:&lt;br /&gt;
         pos = f.tell()&lt;br /&gt;
         line = f.readline().strip()&lt;br /&gt;
         if not line.startswith('#'):&lt;br /&gt;
             f.seek(pos) #rewind&lt;br /&gt;
             break&lt;br /&gt;
{{c|tell}}로 현재 위치를 얻고, {{c|seek}}로 set.&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; f = open('workfile', 'r+')&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; f.write('0123456789abcdef')&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; f.seek(5)      # Go to the 6th byte in the file&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; f.read(1)&lt;br /&gt;
 '5'&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; f.seek(-3, 2)  # Go to the 3rd byte before the end&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; f.read(1)&lt;br /&gt;
 'd'&lt;br /&gt;
https://docs.python.org/2/tutorial/inputoutput.html#methods-of-file-objects&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Interactive session detection==&lt;br /&gt;
 sys.stdin.isatty()&lt;br /&gt;
http://stackoverflow.com/a/7576567/766330&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Temporary file or directory==&lt;br /&gt;
 tempfile.TemporaryFile(&amp;lt;nowiki&amp;gt;[mode='w+b'[, bufsize=-1[, suffix=''[, prefix='tmp'[, dir=None]]]]]&amp;lt;/nowiki&amp;gt;) [https://docs.python.org/2/library/tempfile.html#tempfile.TemporaryFile]&lt;br /&gt;
임시파일을 만든다. 아래를 쓸것.&lt;br /&gt;
 tempfile.NamedTemporaryFile(&amp;lt;nowiki&amp;gt;[mode='w+b'[, bufsize=-1[, suffix=''[, prefix='tmp'[, dir=None[, delete=True]]]]]]&amp;lt;/nowiki&amp;gt;) [https://docs.python.org/2/library/tempfile.html#tempfile.NamedTemporaryFile]&lt;br /&gt;
위와 동일하나 visible name의 파일을 만든다. 이름은 반환값의 name속성으로 받을 수 있다.&lt;br /&gt;
&amp;lt;br&amp;gt;주의할점은, {{c|delete}}속성의 기본값이 {{c|True}}여서 쓰여진 후 곧바로 지워진다. 계속 쓰려면 해당속성을 {{c|False}}로 해야 한다.&lt;br /&gt;
 tempfile.mkdtemp(&amp;lt;nowiki&amp;gt;[suffix=''[, prefix='tmp'[, dir=None]]]&amp;lt;/nowiki&amp;gt;) [https://docs.python.org/2/library/tempfile.html#tempfile.mkdtemp]&lt;br /&gt;
임시디렉토리를 만들고, 자동으로 지우지 않는다.&lt;br /&gt;
&lt;br /&gt;
==Check syntax without running==&lt;br /&gt;
 python -m py_compile script.py&lt;br /&gt;
http://stackoverflow.com/a/8437597/766330&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Time==&lt;br /&gt;
===current time===&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; import time&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; time.time()&lt;br /&gt;
 1491792653.410371&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; import datetime&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; datetime.datetime.fromtimestamp(time.time()).strftime('%Y-%m-%d %H:%M:%S')&lt;br /&gt;
 '2017-04-10 11:51:17'  &lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; datetime.datetime.utcnow()&lt;br /&gt;
 datetime.datetime(2017, 4, 10, 2, 51, 34, 356682)&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; datetime.datetime.now()&lt;br /&gt;
 datetime.datetime(2017, 4, 10, 11, 51, 36, 572681)&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; datetime.datetime.now().strftime(&amp;quot;%A, %d. %B %Y %I:%M%p&amp;quot;)&lt;br /&gt;
 'Monday, 10. April 2017 11:51AM'&lt;br /&gt;
[http://stackoverflow.com/questions/13890935/does-pythons-time-time-return-the-local-or-utc-timestamp]&amp;lt;br&amp;gt;&lt;br /&gt;
if you want UTC, use &amp;lt;c&amp;gt;utcfromtimestamp&amp;lt;/c&amp;gt; instead of &amp;lt;c&amp;gt;fromtimestamp&amp;lt;/c&amp;gt; [https://stackoverflow.com/a/37188257/766330]&lt;br /&gt;
&lt;br /&gt;
===yesterday===&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; from datetime import date, timedelta&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; yesterday = date.today() - timedelta(1)&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; print yesterday.strftime('%m%d%y')&lt;br /&gt;
 '110909'&lt;br /&gt;
[http://stackoverflow.com/a/1712127/766330]&lt;br /&gt;
&lt;br /&gt;
[https://docs.python.org/2/library/datetime.html#strftime-and-strptime-behavior strftime format manual]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==String replace==&lt;br /&gt;
==={{c|str.replace}}===&lt;br /&gt;
 str.replace(old, new[, max]) [https://www.tutorialspoint.com/python/string_replace.htm]&lt;br /&gt;
==={{c|re.sub}}===&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt;&amp;lt;nowiki&amp;gt; re.sub(r'def\s+([a-zA-Z_][a-zA-Z_0-9]*)\s*\(\s*\):',&lt;br /&gt;
 ...        r'static PyObject*\npy_\1(void)\n{',&lt;br /&gt;
 ...        'def myfunc():')&lt;br /&gt;
 'static PyObject*\npy_myfunc(void)\n{'&amp;lt;/nowiki&amp;gt; [https://docs.python.org/2/library/re.html#re.sub ]&lt;br /&gt;
commented version example&lt;br /&gt;
 line = re.sub(r&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
   (?x) # Use free-spacing mode.&lt;br /&gt;
   &amp;lt;    # Match a literal '&amp;lt;'&lt;br /&gt;
   /?   # Optionally match a '/'&lt;br /&gt;
   \[   # Match a literal '['&lt;br /&gt;
   \d+  # Match one or more digits&lt;br /&gt;
   &amp;gt;    # Match a literal '&amp;gt;'&lt;br /&gt;
   &amp;quot;&amp;quot;&amp;quot;, &amp;quot;&amp;quot;, line) [http://stackoverflow.com/a/5658439/766330]&lt;br /&gt;
&lt;br /&gt;
=={{c|is}} and {{c|&amp;lt;nowiki&amp;gt;==&amp;lt;/nowiki&amp;gt;}}==&lt;br /&gt;
{{c|is}} is identity testing, {{c|&amp;lt;nowiki&amp;gt;==&amp;lt;/nowiki&amp;gt;}} is equality testing. what happens in your code would be emulated in the interpreter like this:&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; a = 'pub'&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; b = &amp;lt;nowiki&amp;gt;''&amp;lt;/nowiki&amp;gt;.join(['p', 'u', 'b'])&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; a == b&lt;br /&gt;
 True&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; a is b&lt;br /&gt;
 False&lt;br /&gt;
[http://stackoverflow.com/a/1504742/766330]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Access index in {{c|for}} loop==&lt;br /&gt;
{{c|enumerate}}&lt;br /&gt;
 for idx, val in enumerate(ints):&lt;br /&gt;
    print(idx, val)&lt;br /&gt;
[http://stackoverflow.com/a/522578/766330]&lt;br /&gt;
&lt;br /&gt;
==Max integer==&lt;br /&gt;
 sys.maxint&lt;br /&gt;
[http://stackoverflow.com/a/7604981/766330]&lt;br /&gt;
&lt;br /&gt;
python 3에서는 안된다고 한다. &amp;lt;del&amp;gt;어차피 안쓰니 상관없지만&amp;lt;/del&amp;gt; 그래서 다음과 같이 한다고.&lt;br /&gt;
&amp;lt;pre&amp;gt;import sys&lt;br /&gt;
max = sys.maxsize&lt;br /&gt;
min = -sys.maxsize&amp;lt;/pre&amp;gt;&lt;br /&gt;
[https://stackoverflow.com/a/42544543/766330]&lt;br /&gt;
&lt;br /&gt;
다음도 간단하고 좋은 것 같다. 2,3에서 모두 동작&lt;br /&gt;
 float('inf')&lt;br /&gt;
 float('-inf')&lt;br /&gt;
[https://stackoverflow.com/a/37300370/766330]&lt;br /&gt;
&lt;br /&gt;
==Argument parsing==&lt;br /&gt;
use [https://docs.python.org/2.7/library/argparse.html#action argparse]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=={{c|range}} by step==&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; step = .1&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; N = 10     # number of data points&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; [ x / pow(step, -1) for x in range(0, N + 1) ]&lt;br /&gt;
 [0.0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0]&lt;br /&gt;
[http://stackoverflow.com/a/41079203/766330]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==File existence==&lt;br /&gt;
 os.path.exists(file_path)&lt;br /&gt;
[http://stackoverflow.com/a/82846/766330] [https://docs.python.org/2/library/os.path.html#os.path.exists]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Define source code encoding==&lt;br /&gt;
첫째나 둘째줄에,&lt;br /&gt;
 # coding=&amp;lt;encoding name&amp;gt;&lt;br /&gt;
보통 에디터들은 다음 형식을 이해함.&lt;br /&gt;
 #!/usr/bin/python&lt;br /&gt;
 # -*- coding: &amp;lt;encoding name&amp;gt; -*-&lt;br /&gt;
혹은&lt;br /&gt;
 #!/usr/bin/python&lt;br /&gt;
 # vim: set fileencoding=&amp;lt;encoding name&amp;gt; :&lt;br /&gt;
정확히는, 첫째나 둘째줄이 아래 정규식에 맞아야 함.&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;^[ \t\v]*#.*?coding[:=][ \t]*([-_.a-zA-Z0-9]+)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
https://www.python.org/dev/peps/pep-0263/&lt;br /&gt;
&lt;br /&gt;
==encoding==&lt;br /&gt;
기본적으로 파이썬은 유니코드를 사용한다. encode/decode할 때, encode하면 유니코드로부터 다른 인코딩으로 가고, decode하면 다른 인코딩으로부터 유니코드로 온다는 얘기. 그래서 unicode().decode()는 매우 쓸데가 없다. [https://stackoverflow.com/a/449281/766330] 보통은 기본 인코딩을 utf8로 쓰므로 파이썬 코드상에서 가끔 한글이 이상한 동작을 보이면 다 &amp;lt;code&amp;gt;decode('utf-8')&amp;lt;/code&amp;gt;붙여주면 된다. 하이픈 없이 utf8이라고 써도 된다. &lt;br /&gt;
&lt;br /&gt;
주의할점은,  encode를 부르면 암묵적으로 decode가 먼저 불린다. 따라서 (쓸일도 거의 없지만) encode할 때는 원래 문자열을 decode해주는 것이 안전하다. 안해주면 ascii codec으로 디코딩을 먼저 시도하는데, 한글의 경우는 잘 안되므로 &amp;lt;code&amp;gt;UnicodeEncodeError: 'ascii' codec can't encode characters in position blabla: ordinal not in range(128)&amp;lt;/code&amp;gt; 요런 친숙한(?) 에러가 난다. 일단 유니코드로 다 바꾸고 다른 인코딩으로 넘어간다고 생각하면 됨. [https://stackoverflow.com/questions/10561923/unicodedecodeerror-ascii-codec-cant-decode-byte-0xef-in-position-1]&lt;br /&gt;
&lt;br /&gt;
스트링format에서, %s로 유니코드를 받으려면 format string도 unicode여야 한다. &amp;lt;code&amp;gt;u'%s'&amp;lt;/code&amp;gt; 이렇게. 그래서 섞어 써야 할 때는, ①format string을 놔두고, 유니코드를 utf8로 디코드 해서 넘기든지, ② format string을 unicode로 주고 utf8문자열에 죄다 &amp;lt;code&amp;gt;decode('utf-8')&amp;lt;/code&amp;gt;을 붙인다.&lt;br /&gt;
&lt;br /&gt;
시간이 너무 남아돌면 기본 매뉴얼[https://docs.python.org/2/howto/unicode.html]을 훑어본다.&lt;br /&gt;
&lt;br /&gt;
[https://stackoverflow.com/a/492711/766330 stackoverflow]에 훌륭한 규칙이 나옴: A rule of thumb is: Always use Unicode internally. Decode what you receive, and encode what you send. 받는건 무조건 decode, 내보내는건 무조건 encode. 내부는 유니코드로 고정이기 때문.&lt;br /&gt;
&lt;br /&gt;
==Reading another encoding from a file==&lt;br /&gt;
&amp;lt;shl&amp;gt;&lt;br /&gt;
import codecs&lt;br /&gt;
f = codecs.open('unicode.rst', encoding='utf-8')&lt;br /&gt;
for line in f:&lt;br /&gt;
    print repr(line)&lt;br /&gt;
&amp;lt;/shl&amp;gt;&lt;br /&gt;
https://stackoverflow.com/a/147756/766330&lt;br /&gt;
&lt;br /&gt;
=={{c|randint}}==&lt;br /&gt;
 from random import randint&lt;br /&gt;
 print(randint(0,9))&lt;br /&gt;
0~9 inclusive&amp;lt;br&amp;gt;&lt;br /&gt;
https://docs.python.org/2/library/random.html#random.randint &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=={{c|groupby}} example==&lt;br /&gt;
 from itertools import groupby&lt;br /&gt;
 &lt;br /&gt;
 things = [(&amp;quot;animal&amp;quot;, &amp;quot;bear&amp;quot;), (&amp;quot;animal&amp;quot;, &amp;quot;duck&amp;quot;), (&amp;quot;plant&amp;quot;, &amp;quot;cactus&amp;quot;), (&amp;quot;vehicle&amp;quot;, &amp;quot;speed boat&amp;quot;), (&amp;quot;vehicle&amp;quot;, &amp;quot;school bus&amp;quot;)]&lt;br /&gt;
 &lt;br /&gt;
 for key, group in groupby(things, lambda x: x[0]):&lt;br /&gt;
     for thing in group:&lt;br /&gt;
         print &amp;quot;A %s is a %s.&amp;quot; % (thing[1], key)&lt;br /&gt;
     print &amp;quot; &amp;quot;&lt;br /&gt;
output&lt;br /&gt;
 A bear is a animal.&lt;br /&gt;
 A duck is a animal.&lt;br /&gt;
 &lt;br /&gt;
 A cactus is a plant.&lt;br /&gt;
 &lt;br /&gt;
 A speed boat is a vehicle.&lt;br /&gt;
 A school bus is a vehicle.&lt;br /&gt;
 &lt;br /&gt;
http://stackoverflow.com/a/7286/766330&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Suppress scientific notation==&lt;br /&gt;
use {{c|%f}}&lt;br /&gt;
 '%f' % (x/y)&lt;br /&gt;
http://stackoverflow.com/a/658777/766330&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==To ignore exception==&lt;br /&gt;
 except:&lt;br /&gt;
     pass&lt;br /&gt;
http://stackoverflow.com/a/574734/766330&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Delete items from a dictionary while iterating over it==&lt;br /&gt;
iteration중에는 지울 수 없다. 두번 돌아야 함.&lt;br /&gt;
 remove = [k for k in mydict if k == val]&lt;br /&gt;
 for k in remove: del mydict[k]&lt;br /&gt;
http://stackoverflow.com/a/5385196/766330&lt;br /&gt;
&lt;br /&gt;
==Print without newline==&lt;br /&gt;
 import sys&lt;br /&gt;
 sys.stdout.write('.')&lt;br /&gt;
http://stackoverflow.com/a/493399/766330&lt;br /&gt;
&lt;br /&gt;
=={{c|if else}} in list comprehension==&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[ unicode(x.strip()) if x is not None else '' for x in row ]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
http://stackoverflow.com/a/4260304/766330&lt;br /&gt;
&lt;br /&gt;
==filtering a dictionary according to an arbitrary condition==&lt;br /&gt;
use dict comprehension&lt;br /&gt;
 {k: v for k, v in points.iteritems() if v[0] &amp;lt; 5 and v[1] &amp;lt; 5}&lt;br /&gt;
https://stackoverflow.com/a/16589453/766330&lt;br /&gt;
&lt;br /&gt;
==Executing multi-line statements within PDB==&lt;br /&gt;
 (pdb) &amp;lt;span style='color:red'&amp;gt;!import code; code.interact(local=vars()) &amp;lt;/span&amp;gt;&lt;br /&gt;
 Python 2.6.5 (r265:79063, Apr 16 2010, 13:57:41) &lt;br /&gt;
 [GCC 4.4.3] on linux2&lt;br /&gt;
 Type &amp;quot;help&amp;quot;, &amp;quot;copyright&amp;quot;, &amp;quot;credits&amp;quot; or &amp;quot;license&amp;quot; for more information.&lt;br /&gt;
 (InteractiveConsole)&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; &lt;br /&gt;
https://stackoverflow.com/a/8387484/766330&lt;br /&gt;
&lt;br /&gt;
==Converting a IPython Notebook into a Python file via commandline==&lt;br /&gt;
 $ jupyter nbconvert --to script [YOUR_NOTEBOOK].ipynb&lt;br /&gt;
or in ipython notebook&lt;br /&gt;
 !jupyter nbconvert --to script [YOUR_NOTEBOOK].ipynb&lt;br /&gt;
https://stackoverflow.com/a/19779226/766330&lt;br /&gt;
&lt;br /&gt;
==Write float(or int) to a binary file==&lt;br /&gt;
&amp;lt;pre&amp;gt;import struct&lt;br /&gt;
s = struct.pack('f'*len(floats), *floats)&lt;br /&gt;
f = open('file','wb')&lt;br /&gt;
f.write(s)&lt;br /&gt;
f.close()&amp;lt;/pre&amp;gt;&lt;br /&gt;
To read this from [[C]], refer [http://iph.kr/wiki/index.php/C#Read.2Fwrite_float_binary here]&lt;br /&gt;
&lt;br /&gt;
https://stackoverflow.com/a/807881/766330&lt;br /&gt;
&lt;br /&gt;
==cross reference between files==&lt;br /&gt;
Use following statements according to appropriate order&lt;br /&gt;
 from __main__ import *&lt;br /&gt;
&lt;br /&gt;
https://stackoverflow.com/a/16068078/766330&lt;br /&gt;
&lt;br /&gt;
==pdf file merge==&lt;br /&gt;
  from PyPDF2 import PdfMerger&lt;br /&gt;
  &lt;br /&gt;
  pdfs = ['file1.pdf', 'file2.pdf', 'file3.pdf', 'file4.pdf']&lt;br /&gt;
  &lt;br /&gt;
  merger = PdfMerger()&lt;br /&gt;
  &lt;br /&gt;
  for pdf in pdfs:&lt;br /&gt;
      merger.append(pdf)&lt;br /&gt;
  &lt;br /&gt;
  merger.write(&amp;quot;result.pdf&amp;quot;)&lt;br /&gt;
  merger.close()&lt;br /&gt;
&lt;br /&gt;
page range를 줄 수도 있다고 함. 별로 직관적이지는 않아보임&lt;br /&gt;
&lt;br /&gt;
그냥 파일 여러개를 합하는것을 명령어로 할 수 있는 것:&lt;br /&gt;
  python -m fitz join -o result.pdf file1.pdf file2.pdf file3.pdf&lt;br /&gt;
&lt;br /&gt;
PyMuPdf[https://github.com/pymupdf/PyMuPDF]참고&lt;br /&gt;
&lt;br /&gt;
[https://stackoverflow.com/a/37945454/766330]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==natural sort==&lt;br /&gt;
use &amp;lt;kbd&amp;gt;natsorted&amp;lt;/kbd&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; from natsort import natsorted, ns&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; x = ['Elm11', 'Elm12', 'Elm2', 'elm0', 'elm1', 'elm10', 'elm13', 'elm9']&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; natsorted(x, key=lambda y: y.lower())&lt;br /&gt;
['elm0', 'elm1', 'Elm2', 'elm9', 'elm10', 'Elm11', 'Elm12', 'elm13']&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; natsorted(x, alg=ns.IGNORECASE)  # or alg=ns.IC&lt;br /&gt;
['elm0', 'elm1', 'Elm2', 'elm9', 'elm10', 'Elm11', 'Elm12', 'elm13']&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
[https://stackoverflow.com/a/18415320/766330]&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
		
	</entry>
	<entry>
		<id>http://samediff.kr/wiki/index.php?title=Python&amp;diff=16216</id>
		<title>Python</title>
		<link rel="alternate" type="text/html" href="http://samediff.kr/wiki/index.php?title=Python&amp;diff=16216"/>
		<updated>2023-02-20T04:06:13Z</updated>

		<summary type="html">&lt;p&gt;Admin: /* cross reference between files */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== pdb howto ==&lt;br /&gt;
[https://realpython.com/python-debugging-pdb/]&lt;br /&gt;
&lt;br /&gt;
==start debugger automatically on error==&lt;br /&gt;
 python -m pdb -c continue myscript.py&lt;br /&gt;
[https://stackoverflow.com/a/2438834/766330]&lt;br /&gt;
&lt;br /&gt;
==print all variables==&lt;br /&gt;
 locals()&lt;br /&gt;
[https://stackoverflow.com/questions/21961693/how-to-print-all-variables-values-when-debugging-python-with-pdb-without-specif]&lt;br /&gt;
&lt;br /&gt;
==current time as str==&lt;br /&gt;
 import datetime&lt;br /&gt;
 cur = datetime.datetime.now()&lt;br /&gt;
 cur.strftime('%m%d%H%M')&lt;br /&gt;
[https://tecadmin.net/get-current-date-time-python/]&lt;br /&gt;
&lt;br /&gt;
==simple line plots==&lt;br /&gt;
 plt.style.use('seaborn-whitegrid')&lt;br /&gt;
[https://jakevdp.github.io/PythonDataScienceHandbook/04.01-simple-line-plots.html]&lt;br /&gt;
&lt;br /&gt;
==flatten all lists recursively==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
li=[[1,[[2]],[[[3]]]],[['4'],{5:5}]]&lt;br /&gt;
flatten=lambda l: sum(map(flatten,l),[]) if isinstance(l,list) else [l]&lt;br /&gt;
print flatten(li)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
[https://stackoverflow.com/a/12474246/766330]&lt;br /&gt;
&lt;br /&gt;
다음과 같은 기묘한 속성 때문이다&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; [] + [1]&lt;br /&gt;
[1]&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; sum([[1]], [2])&lt;br /&gt;
[2, 1]&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; sum([[1]], [])&lt;br /&gt;
[1]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
다음을 실행하면,&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
depth = 0&lt;br /&gt;
def flatten_(x):&lt;br /&gt;
    global depth&lt;br /&gt;
    depth += 1&lt;br /&gt;
    r = None&lt;br /&gt;
    if isinstance(x, list):&lt;br /&gt;
        print('&amp;gt;'*depth, 'list:', x)&lt;br /&gt;
        y = sum(map(flatten_,x), [])&lt;br /&gt;
        r = y&lt;br /&gt;
    else:&lt;br /&gt;
        print('&amp;gt;'*depth, 'not list:',x)&lt;br /&gt;
        r = [x]&lt;br /&gt;
    print('&amp;lt;'*depth, 'returning', r)&lt;br /&gt;
    depth -= 1&lt;br /&gt;
    return r&lt;br /&gt;
    &lt;br /&gt;
li=[[1,[[2]],[[[3]]]],[['4'],{5:5}]]&lt;br /&gt;
flatten_(li)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
결과는,&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;gt; list: [[1, [[2]], [[[3]]]], [['4'], {5: 5}]]&lt;br /&gt;
&amp;gt;&amp;gt; list: [1, [[2]], [[[3]]]]&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; not list: 1&lt;br /&gt;
&amp;lt;&amp;lt;&amp;lt; returning [1]&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; list: [[2]]&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt;&amp;gt; list: [2]&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; not list: 2&lt;br /&gt;
&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt; returning [2]&lt;br /&gt;
&amp;lt;&amp;lt;&amp;lt;&amp;lt; returning [2]&lt;br /&gt;
&amp;lt;&amp;lt;&amp;lt; returning [2]&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; list: [[[3]]]&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt;&amp;gt; list: [[3]]&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; list: [3]&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; not list: 3&lt;br /&gt;
&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt; returning [3]&lt;br /&gt;
&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt; returning [3]&lt;br /&gt;
&amp;lt;&amp;lt;&amp;lt;&amp;lt; returning [3]&lt;br /&gt;
&amp;lt;&amp;lt;&amp;lt; returning [3]&lt;br /&gt;
&amp;lt;&amp;lt; returning [1, 2, 3]&lt;br /&gt;
&amp;gt;&amp;gt; list: [['4'], {5: 5}]&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; list: ['4']&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt;&amp;gt; not list: 4&lt;br /&gt;
&amp;lt;&amp;lt;&amp;lt;&amp;lt; returning ['4']&lt;br /&gt;
&amp;lt;&amp;lt;&amp;lt; returning ['4']&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; not list: {5: 5}&lt;br /&gt;
&amp;lt;&amp;lt;&amp;lt; returning [{5: 5}]&lt;br /&gt;
&amp;lt;&amp;lt; returning ['4', {5: 5}]&lt;br /&gt;
&amp;lt; returning [1, 2, 3, '4', {5: 5}]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==재정의==&lt;br /&gt;
[https://docs.python.org/3/reference/datamodel.html#object.__int__ 이 페이지]에 거의 다 있는듯함.&amp;lt;br&amp;gt;&lt;br /&gt;
나열하면 다음과 같다.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
__abs__             __add__             __aenter__          __aexit__           &lt;br /&gt;
__aiter__           __and__             __anext__           __annotations__     &lt;br /&gt;
__await__           __bases__           __bool__            __bytes__           &lt;br /&gt;
__call__            __ceil__            __class__           __classcell__       &lt;br /&gt;
__closure__         __code__            __complex__         __contains__        &lt;br /&gt;
__defaults__        __del__             __delattr__         __delete__          &lt;br /&gt;
__delitem__         __dict__            __dir__             __divmod__          &lt;br /&gt;
__doc__             __enter__           __eq__              __exit__            &lt;br /&gt;
__file__            __float__           __floor__           __floordiv__        &lt;br /&gt;
__format__          __func__            __future__          __ge__              &lt;br /&gt;
__get__             __getattr__         __getattribute__    __getitem__         &lt;br /&gt;
__globals__         __gt__              __hash__            __iadd__            &lt;br /&gt;
__iand__            __ifloordiv__       __ilshift__         __imatmul__         &lt;br /&gt;
__imod__            __import__          __imul__            __index__           &lt;br /&gt;
__init__            __instancecheck__   __int__             __invert__          &lt;br /&gt;
__ior__             __ipow__            __irshift__         __isub__            &lt;br /&gt;
__iter__            __itruediv__        __ixor__            __kwdefaults__      &lt;br /&gt;
__le__              __len__             __lshift__          __lt__              &lt;br /&gt;
__matmul__          __missing__         __mod__             __module__          &lt;br /&gt;
__mro__             __mul__             __name__            __ne__              &lt;br /&gt;
__neg__             __new__             __next__            __objclass__        &lt;br /&gt;
__or__              __pos__             __pow__             __prepare__         &lt;br /&gt;
__qualname__        __radd__            __rand__            __rdivmod__         &lt;br /&gt;
__repr__            __reversed__        __rfloordiv__       __rlshift__         &lt;br /&gt;
__rmatmul__         __rmod__            __rmul__            __ror__             &lt;br /&gt;
__round__           __rpow__            __rrshift__         __rshift__          &lt;br /&gt;
__rsub__            __rtruediv__        __rxor__            __self__            &lt;br /&gt;
__set__             __setattr__         __setitem__         __slots__           &lt;br /&gt;
__str__             __sub__             __subclasscheck__   __traceback__       &lt;br /&gt;
__truediv__         __trunc__           __weakref__         __xor__  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;grep -ho -e '__[a-z]*__' x.txt | sort -u | xargs -n 4 printf '%-20s%-20s%-20s%-20s\n'&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==2.7과 3.6 동시에 쓰기==&lt;br /&gt;
[https://conda.io/docs/user-guide/tasks/manage-python.html 참고링크] [https://conda.io/docs/user-guide/tasks/manage-environments.html#activate-env 참고링크2]&lt;br /&gt;
&lt;br /&gt;
아래로 만들고,&lt;br /&gt;
 conda create -n py36 python=3.6 anaconda&lt;br /&gt;
아래로 activate&lt;br /&gt;
 source activate py36&lt;br /&gt;
&lt;br /&gt;
환경 리스트&lt;br /&gt;
 conda env list&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;code&amp;gt;__call__&amp;lt;/code&amp;gt; 클래스로도, 함수로도 쓸 수 있음.==&lt;br /&gt;
&amp;lt;pre&amp;gt;The first is used to initialise newly created object, and receives arguments used to do that:&lt;br /&gt;
&lt;br /&gt;
    class Foo:&lt;br /&gt;
        def __init__(self, a, b, c):&lt;br /&gt;
            # ...&lt;br /&gt;
&lt;br /&gt;
    x = Foo(1, 2, 3) # __init__&lt;br /&gt;
&lt;br /&gt;
The second implements function call operator.&lt;br /&gt;
&lt;br /&gt;
    class Foo:&lt;br /&gt;
        def __call__(self, a, b, c):&lt;br /&gt;
            # ...&lt;br /&gt;
&lt;br /&gt;
    x = Foo()&lt;br /&gt;
    x(1, 2, 3) # __call__&amp;lt;/pre&amp;gt;&lt;br /&gt;
[https://stackoverflow.com/a/9663601/766330]&lt;br /&gt;
&lt;br /&gt;
==jupyter notebook matplotlib on OSX==&lt;br /&gt;
Insert below code at the head of the note.&lt;br /&gt;
 import matplotlib as mpl &lt;br /&gt;
 mpl.use('TkAgg')&lt;br /&gt;
[https://stackoverflow.com/questions/21784641/installation-issue-with-matplotlib-python#comment56913201_21789908]&lt;br /&gt;
&lt;br /&gt;
==한글외 문자 제거==&lt;br /&gt;
&amp;lt;pre&amp;gt;hangul = re.compile('[^ ㄱ-ㅣ가-힣]+') # 한글과 띄어쓰기를 제외한 모든 글자&lt;br /&gt;
# hangul = re.compile('[^ \u3131-\u3163\uac00-\ud7a3]+')  # 위와 동일&lt;br /&gt;
result = hangul.sub('', target_text) # 한글과 띄어쓰기를 제외한 모든 부분을 제거&amp;lt;/pre&amp;gt;&lt;br /&gt;
http://jokergt.tistory.com/52&lt;br /&gt;
&lt;br /&gt;
==ternary operator==&lt;br /&gt;
 a if condition else b&lt;br /&gt;
[https://stackoverflow.com/a/394814/766330]&lt;br /&gt;
&lt;br /&gt;
==print color to terminal stdout==&lt;br /&gt;
 print('\x1b[6;30;42m' + 'Success!' + '\x1b[0m')&lt;br /&gt;
[https://stackoverflow.com/a/21786287/766330]&lt;br /&gt;
&lt;br /&gt;
ansi&lt;br /&gt;
&amp;lt;pre&amp;gt;RED = '\033[91m'&lt;br /&gt;
GREEN = '\033[92m'&lt;br /&gt;
YELLOW = '\033[93m'&lt;br /&gt;
LIGHT_PURPLE = '\033[94m'&lt;br /&gt;
PURPLE = '\033[95m'&lt;br /&gt;
END = '\033[0m'&amp;lt;/pre&amp;gt;&lt;br /&gt;
코드로도 된다고 하는데 그럴필요까지야.&lt;br /&gt;
&amp;lt;pre&amp;gt;from __future__ import print_function&lt;br /&gt;
from colorprint import *&lt;br /&gt;
&lt;br /&gt;
print('Hello', 'world', color='blue', end='', sep=', ')&lt;br /&gt;
print('!', color='red', format=['bold', ‘blink'])&amp;lt;/pre&amp;gt;&lt;br /&gt;
[https://stackoverflow.com/a/31310228/766330]&lt;br /&gt;
&lt;br /&gt;
==filter==&lt;br /&gt;
 filter(None, list)&lt;br /&gt;
None이나 \(0\)을 제외하게 된다.[https://stackoverflow.com/q/16096754/766330]&lt;br /&gt;
&lt;br /&gt;
==ipython (jupyter notebook) ==&lt;br /&gt;
===load a file===&lt;br /&gt;
 %load f.py&lt;br /&gt;
===save current cell to a file===&lt;br /&gt;
 %%writefile f.py&lt;br /&gt;
===shell command===&lt;br /&gt;
 !ls&lt;br /&gt;
 !cat “file” &lt;br /&gt;
[https://stackoverflow.com/questions/21034373/how-to-load-edit-run-save-text-files-py-into-an-ipython-notebook-cell]&lt;br /&gt;
&lt;br /&gt;
==Multiple input stream==&lt;br /&gt;
 import fileinput&lt;br /&gt;
 for line in fileinput.input():&lt;br /&gt;
     process(line)&lt;br /&gt;
https://docs.python.org/2/library/fileinput.html#module-fileinput&lt;br /&gt;
&lt;br /&gt;
==file position==&lt;br /&gt;
 def skip_comments(f):&lt;br /&gt;
     while True:&lt;br /&gt;
         pos = f.tell()&lt;br /&gt;
         line = f.readline().strip()&lt;br /&gt;
         if not line.startswith('#'):&lt;br /&gt;
             f.seek(pos) #rewind&lt;br /&gt;
             break&lt;br /&gt;
{{c|tell}}로 현재 위치를 얻고, {{c|seek}}로 set.&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; f = open('workfile', 'r+')&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; f.write('0123456789abcdef')&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; f.seek(5)      # Go to the 6th byte in the file&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; f.read(1)&lt;br /&gt;
 '5'&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; f.seek(-3, 2)  # Go to the 3rd byte before the end&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; f.read(1)&lt;br /&gt;
 'd'&lt;br /&gt;
https://docs.python.org/2/tutorial/inputoutput.html#methods-of-file-objects&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Interactive session detection==&lt;br /&gt;
 sys.stdin.isatty()&lt;br /&gt;
http://stackoverflow.com/a/7576567/766330&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Temporary file or directory==&lt;br /&gt;
 tempfile.TemporaryFile(&amp;lt;nowiki&amp;gt;[mode='w+b'[, bufsize=-1[, suffix=''[, prefix='tmp'[, dir=None]]]]]&amp;lt;/nowiki&amp;gt;) [https://docs.python.org/2/library/tempfile.html#tempfile.TemporaryFile]&lt;br /&gt;
임시파일을 만든다. 아래를 쓸것.&lt;br /&gt;
 tempfile.NamedTemporaryFile(&amp;lt;nowiki&amp;gt;[mode='w+b'[, bufsize=-1[, suffix=''[, prefix='tmp'[, dir=None[, delete=True]]]]]]&amp;lt;/nowiki&amp;gt;) [https://docs.python.org/2/library/tempfile.html#tempfile.NamedTemporaryFile]&lt;br /&gt;
위와 동일하나 visible name의 파일을 만든다. 이름은 반환값의 name속성으로 받을 수 있다.&lt;br /&gt;
&amp;lt;br&amp;gt;주의할점은, {{c|delete}}속성의 기본값이 {{c|True}}여서 쓰여진 후 곧바로 지워진다. 계속 쓰려면 해당속성을 {{c|False}}로 해야 한다.&lt;br /&gt;
 tempfile.mkdtemp(&amp;lt;nowiki&amp;gt;[suffix=''[, prefix='tmp'[, dir=None]]]&amp;lt;/nowiki&amp;gt;) [https://docs.python.org/2/library/tempfile.html#tempfile.mkdtemp]&lt;br /&gt;
임시디렉토리를 만들고, 자동으로 지우지 않는다.&lt;br /&gt;
&lt;br /&gt;
==Check syntax without running==&lt;br /&gt;
 python -m py_compile script.py&lt;br /&gt;
http://stackoverflow.com/a/8437597/766330&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Time==&lt;br /&gt;
===current time===&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; import time&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; time.time()&lt;br /&gt;
 1491792653.410371&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; import datetime&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; datetime.datetime.fromtimestamp(time.time()).strftime('%Y-%m-%d %H:%M:%S')&lt;br /&gt;
 '2017-04-10 11:51:17'  &lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; datetime.datetime.utcnow()&lt;br /&gt;
 datetime.datetime(2017, 4, 10, 2, 51, 34, 356682)&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; datetime.datetime.now()&lt;br /&gt;
 datetime.datetime(2017, 4, 10, 11, 51, 36, 572681)&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; datetime.datetime.now().strftime(&amp;quot;%A, %d. %B %Y %I:%M%p&amp;quot;)&lt;br /&gt;
 'Monday, 10. April 2017 11:51AM'&lt;br /&gt;
[http://stackoverflow.com/questions/13890935/does-pythons-time-time-return-the-local-or-utc-timestamp]&amp;lt;br&amp;gt;&lt;br /&gt;
if you want UTC, use &amp;lt;c&amp;gt;utcfromtimestamp&amp;lt;/c&amp;gt; instead of &amp;lt;c&amp;gt;fromtimestamp&amp;lt;/c&amp;gt; [https://stackoverflow.com/a/37188257/766330]&lt;br /&gt;
&lt;br /&gt;
===yesterday===&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; from datetime import date, timedelta&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; yesterday = date.today() - timedelta(1)&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; print yesterday.strftime('%m%d%y')&lt;br /&gt;
 '110909'&lt;br /&gt;
[http://stackoverflow.com/a/1712127/766330]&lt;br /&gt;
&lt;br /&gt;
[https://docs.python.org/2/library/datetime.html#strftime-and-strptime-behavior strftime format manual]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==String replace==&lt;br /&gt;
==={{c|str.replace}}===&lt;br /&gt;
 str.replace(old, new[, max]) [https://www.tutorialspoint.com/python/string_replace.htm]&lt;br /&gt;
==={{c|re.sub}}===&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt;&amp;lt;nowiki&amp;gt; re.sub(r'def\s+([a-zA-Z_][a-zA-Z_0-9]*)\s*\(\s*\):',&lt;br /&gt;
 ...        r'static PyObject*\npy_\1(void)\n{',&lt;br /&gt;
 ...        'def myfunc():')&lt;br /&gt;
 'static PyObject*\npy_myfunc(void)\n{'&amp;lt;/nowiki&amp;gt; [https://docs.python.org/2/library/re.html#re.sub ]&lt;br /&gt;
commented version example&lt;br /&gt;
 line = re.sub(r&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
   (?x) # Use free-spacing mode.&lt;br /&gt;
   &amp;lt;    # Match a literal '&amp;lt;'&lt;br /&gt;
   /?   # Optionally match a '/'&lt;br /&gt;
   \[   # Match a literal '['&lt;br /&gt;
   \d+  # Match one or more digits&lt;br /&gt;
   &amp;gt;    # Match a literal '&amp;gt;'&lt;br /&gt;
   &amp;quot;&amp;quot;&amp;quot;, &amp;quot;&amp;quot;, line) [http://stackoverflow.com/a/5658439/766330]&lt;br /&gt;
&lt;br /&gt;
=={{c|is}} and {{c|&amp;lt;nowiki&amp;gt;==&amp;lt;/nowiki&amp;gt;}}==&lt;br /&gt;
{{c|is}} is identity testing, {{c|&amp;lt;nowiki&amp;gt;==&amp;lt;/nowiki&amp;gt;}} is equality testing. what happens in your code would be emulated in the interpreter like this:&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; a = 'pub'&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; b = &amp;lt;nowiki&amp;gt;''&amp;lt;/nowiki&amp;gt;.join(['p', 'u', 'b'])&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; a == b&lt;br /&gt;
 True&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; a is b&lt;br /&gt;
 False&lt;br /&gt;
[http://stackoverflow.com/a/1504742/766330]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Access index in {{c|for}} loop==&lt;br /&gt;
{{c|enumerate}}&lt;br /&gt;
 for idx, val in enumerate(ints):&lt;br /&gt;
    print(idx, val)&lt;br /&gt;
[http://stackoverflow.com/a/522578/766330]&lt;br /&gt;
&lt;br /&gt;
==Max integer==&lt;br /&gt;
 sys.maxint&lt;br /&gt;
[http://stackoverflow.com/a/7604981/766330]&lt;br /&gt;
&lt;br /&gt;
python 3에서는 안된다고 한다. &amp;lt;del&amp;gt;어차피 안쓰니 상관없지만&amp;lt;/del&amp;gt; 그래서 다음과 같이 한다고.&lt;br /&gt;
&amp;lt;pre&amp;gt;import sys&lt;br /&gt;
max = sys.maxsize&lt;br /&gt;
min = -sys.maxsize&amp;lt;/pre&amp;gt;&lt;br /&gt;
[https://stackoverflow.com/a/42544543/766330]&lt;br /&gt;
&lt;br /&gt;
다음도 간단하고 좋은 것 같다. 2,3에서 모두 동작&lt;br /&gt;
 float('inf')&lt;br /&gt;
 float('-inf')&lt;br /&gt;
[https://stackoverflow.com/a/37300370/766330]&lt;br /&gt;
&lt;br /&gt;
==Argument parsing==&lt;br /&gt;
use [https://docs.python.org/2.7/library/argparse.html#action argparse]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=={{c|range}} by step==&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; step = .1&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; N = 10     # number of data points&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; [ x / pow(step, -1) for x in range(0, N + 1) ]&lt;br /&gt;
 [0.0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0]&lt;br /&gt;
[http://stackoverflow.com/a/41079203/766330]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==File existence==&lt;br /&gt;
 os.path.exists(file_path)&lt;br /&gt;
[http://stackoverflow.com/a/82846/766330] [https://docs.python.org/2/library/os.path.html#os.path.exists]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Define source code encoding==&lt;br /&gt;
첫째나 둘째줄에,&lt;br /&gt;
 # coding=&amp;lt;encoding name&amp;gt;&lt;br /&gt;
보통 에디터들은 다음 형식을 이해함.&lt;br /&gt;
 #!/usr/bin/python&lt;br /&gt;
 # -*- coding: &amp;lt;encoding name&amp;gt; -*-&lt;br /&gt;
혹은&lt;br /&gt;
 #!/usr/bin/python&lt;br /&gt;
 # vim: set fileencoding=&amp;lt;encoding name&amp;gt; :&lt;br /&gt;
정확히는, 첫째나 둘째줄이 아래 정규식에 맞아야 함.&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;^[ \t\v]*#.*?coding[:=][ \t]*([-_.a-zA-Z0-9]+)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
https://www.python.org/dev/peps/pep-0263/&lt;br /&gt;
&lt;br /&gt;
==encoding==&lt;br /&gt;
기본적으로 파이썬은 유니코드를 사용한다. encode/decode할 때, encode하면 유니코드로부터 다른 인코딩으로 가고, decode하면 다른 인코딩으로부터 유니코드로 온다는 얘기. 그래서 unicode().decode()는 매우 쓸데가 없다. [https://stackoverflow.com/a/449281/766330] 보통은 기본 인코딩을 utf8로 쓰므로 파이썬 코드상에서 가끔 한글이 이상한 동작을 보이면 다 &amp;lt;code&amp;gt;decode('utf-8')&amp;lt;/code&amp;gt;붙여주면 된다. 하이픈 없이 utf8이라고 써도 된다. &lt;br /&gt;
&lt;br /&gt;
주의할점은,  encode를 부르면 암묵적으로 decode가 먼저 불린다. 따라서 (쓸일도 거의 없지만) encode할 때는 원래 문자열을 decode해주는 것이 안전하다. 안해주면 ascii codec으로 디코딩을 먼저 시도하는데, 한글의 경우는 잘 안되므로 &amp;lt;code&amp;gt;UnicodeEncodeError: 'ascii' codec can't encode characters in position blabla: ordinal not in range(128)&amp;lt;/code&amp;gt; 요런 친숙한(?) 에러가 난다. 일단 유니코드로 다 바꾸고 다른 인코딩으로 넘어간다고 생각하면 됨. [https://stackoverflow.com/questions/10561923/unicodedecodeerror-ascii-codec-cant-decode-byte-0xef-in-position-1]&lt;br /&gt;
&lt;br /&gt;
스트링format에서, %s로 유니코드를 받으려면 format string도 unicode여야 한다. &amp;lt;code&amp;gt;u'%s'&amp;lt;/code&amp;gt; 이렇게. 그래서 섞어 써야 할 때는, ①format string을 놔두고, 유니코드를 utf8로 디코드 해서 넘기든지, ② format string을 unicode로 주고 utf8문자열에 죄다 &amp;lt;code&amp;gt;decode('utf-8')&amp;lt;/code&amp;gt;을 붙인다.&lt;br /&gt;
&lt;br /&gt;
시간이 너무 남아돌면 기본 매뉴얼[https://docs.python.org/2/howto/unicode.html]을 훑어본다.&lt;br /&gt;
&lt;br /&gt;
[https://stackoverflow.com/a/492711/766330 stackoverflow]에 훌륭한 규칙이 나옴: A rule of thumb is: Always use Unicode internally. Decode what you receive, and encode what you send. 받는건 무조건 decode, 내보내는건 무조건 encode. 내부는 유니코드로 고정이기 때문.&lt;br /&gt;
&lt;br /&gt;
==Reading another encoding from a file==&lt;br /&gt;
&amp;lt;shl&amp;gt;&lt;br /&gt;
import codecs&lt;br /&gt;
f = codecs.open('unicode.rst', encoding='utf-8')&lt;br /&gt;
for line in f:&lt;br /&gt;
    print repr(line)&lt;br /&gt;
&amp;lt;/shl&amp;gt;&lt;br /&gt;
https://stackoverflow.com/a/147756/766330&lt;br /&gt;
&lt;br /&gt;
=={{c|randint}}==&lt;br /&gt;
 from random import randint&lt;br /&gt;
 print(randint(0,9))&lt;br /&gt;
0~9 inclusive&amp;lt;br&amp;gt;&lt;br /&gt;
https://docs.python.org/2/library/random.html#random.randint &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=={{c|groupby}} example==&lt;br /&gt;
 from itertools import groupby&lt;br /&gt;
 &lt;br /&gt;
 things = [(&amp;quot;animal&amp;quot;, &amp;quot;bear&amp;quot;), (&amp;quot;animal&amp;quot;, &amp;quot;duck&amp;quot;), (&amp;quot;plant&amp;quot;, &amp;quot;cactus&amp;quot;), (&amp;quot;vehicle&amp;quot;, &amp;quot;speed boat&amp;quot;), (&amp;quot;vehicle&amp;quot;, &amp;quot;school bus&amp;quot;)]&lt;br /&gt;
 &lt;br /&gt;
 for key, group in groupby(things, lambda x: x[0]):&lt;br /&gt;
     for thing in group:&lt;br /&gt;
         print &amp;quot;A %s is a %s.&amp;quot; % (thing[1], key)&lt;br /&gt;
     print &amp;quot; &amp;quot;&lt;br /&gt;
output&lt;br /&gt;
 A bear is a animal.&lt;br /&gt;
 A duck is a animal.&lt;br /&gt;
 &lt;br /&gt;
 A cactus is a plant.&lt;br /&gt;
 &lt;br /&gt;
 A speed boat is a vehicle.&lt;br /&gt;
 A school bus is a vehicle.&lt;br /&gt;
 &lt;br /&gt;
http://stackoverflow.com/a/7286/766330&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Suppress scientific notation==&lt;br /&gt;
use {{c|%f}}&lt;br /&gt;
 '%f' % (x/y)&lt;br /&gt;
http://stackoverflow.com/a/658777/766330&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==To ignore exception==&lt;br /&gt;
 except:&lt;br /&gt;
     pass&lt;br /&gt;
http://stackoverflow.com/a/574734/766330&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Delete items from a dictionary while iterating over it==&lt;br /&gt;
iteration중에는 지울 수 없다. 두번 돌아야 함.&lt;br /&gt;
 remove = [k for k in mydict if k == val]&lt;br /&gt;
 for k in remove: del mydict[k]&lt;br /&gt;
http://stackoverflow.com/a/5385196/766330&lt;br /&gt;
&lt;br /&gt;
==Print without newline==&lt;br /&gt;
 import sys&lt;br /&gt;
 sys.stdout.write('.')&lt;br /&gt;
http://stackoverflow.com/a/493399/766330&lt;br /&gt;
&lt;br /&gt;
=={{c|if else}} in list comprehension==&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[ unicode(x.strip()) if x is not None else '' for x in row ]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
http://stackoverflow.com/a/4260304/766330&lt;br /&gt;
&lt;br /&gt;
==filtering a dictionary according to an arbitrary condition==&lt;br /&gt;
use dict comprehension&lt;br /&gt;
 {k: v for k, v in points.iteritems() if v[0] &amp;lt; 5 and v[1] &amp;lt; 5}&lt;br /&gt;
https://stackoverflow.com/a/16589453/766330&lt;br /&gt;
&lt;br /&gt;
==Executing multi-line statements within PDB==&lt;br /&gt;
 (pdb) &amp;lt;span style='color:red'&amp;gt;!import code; code.interact(local=vars()) &amp;lt;/span&amp;gt;&lt;br /&gt;
 Python 2.6.5 (r265:79063, Apr 16 2010, 13:57:41) &lt;br /&gt;
 [GCC 4.4.3] on linux2&lt;br /&gt;
 Type &amp;quot;help&amp;quot;, &amp;quot;copyright&amp;quot;, &amp;quot;credits&amp;quot; or &amp;quot;license&amp;quot; for more information.&lt;br /&gt;
 (InteractiveConsole)&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; &lt;br /&gt;
https://stackoverflow.com/a/8387484/766330&lt;br /&gt;
&lt;br /&gt;
==Converting a IPython Notebook into a Python file via commandline==&lt;br /&gt;
 $ jupyter nbconvert --to script [YOUR_NOTEBOOK].ipynb&lt;br /&gt;
or in ipython notebook&lt;br /&gt;
 !jupyter nbconvert --to script [YOUR_NOTEBOOK].ipynb&lt;br /&gt;
https://stackoverflow.com/a/19779226/766330&lt;br /&gt;
&lt;br /&gt;
==Write float(or int) to a binary file==&lt;br /&gt;
&amp;lt;pre&amp;gt;import struct&lt;br /&gt;
s = struct.pack('f'*len(floats), *floats)&lt;br /&gt;
f = open('file','wb')&lt;br /&gt;
f.write(s)&lt;br /&gt;
f.close()&amp;lt;/pre&amp;gt;&lt;br /&gt;
To read this from [[C]], refer [http://iph.kr/wiki/index.php/C#Read.2Fwrite_float_binary here]&lt;br /&gt;
&lt;br /&gt;
https://stackoverflow.com/a/807881/766330&lt;br /&gt;
&lt;br /&gt;
==cross reference between files==&lt;br /&gt;
Use following statements according to appropriate order&lt;br /&gt;
 from __main__ import *&lt;br /&gt;
&lt;br /&gt;
https://stackoverflow.com/a/16068078/766330&lt;br /&gt;
&lt;br /&gt;
==pdf file merge==&lt;br /&gt;
  from PyPDF2 import PdfMerger&lt;br /&gt;
  &lt;br /&gt;
  pdfs = ['file1.pdf', 'file2.pdf', 'file3.pdf', 'file4.pdf']&lt;br /&gt;
  &lt;br /&gt;
  merger = PdfMerger()&lt;br /&gt;
  &lt;br /&gt;
  for pdf in pdfs:&lt;br /&gt;
      merger.append(pdf)&lt;br /&gt;
  &lt;br /&gt;
  merger.write(&amp;quot;result.pdf&amp;quot;)&lt;br /&gt;
  merger.close()&lt;br /&gt;
&lt;br /&gt;
page range를 줄 수도 있다고 함. 별로 직관적이지는 않아보임&lt;br /&gt;
&lt;br /&gt;
그냥 파일 여러개를 합하는것을 명령어로 할 수 있는 것:&lt;br /&gt;
  python -m fitz join -o result.pdf file1.pdf file2.pdf file3.pdf&lt;br /&gt;
&lt;br /&gt;
PyMuPdf[https://github.com/pymupdf/PyMuPDF]참고&lt;br /&gt;
&lt;br /&gt;
[https://stackoverflow.com/a/37945454/766330]&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
		
	</entry>
	<entry>
		<id>http://samediff.kr/wiki/index.php?title=Machine_Learning&amp;diff=16215</id>
		<title>Machine Learning</title>
		<link rel="alternate" type="text/html" href="http://samediff.kr/wiki/index.php?title=Machine_Learning&amp;diff=16215"/>
		<updated>2021-12-10T06:25:53Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==by themes==&lt;br /&gt;
* [[Recommendation]]&lt;br /&gt;
* [[Face]]&lt;br /&gt;
* [[Person re-identification]]&lt;br /&gt;
* [[segmentation]]&lt;br /&gt;
&lt;br /&gt;
==posts==&lt;br /&gt;
* [[conv1d]]&lt;br /&gt;
* [[naive gradient descent]]&lt;br /&gt;
* [https://www.notion.so/nll-loss-57987c7b5f7342e4b6bc929c9b3be587 nll loss]&lt;br /&gt;
&lt;br /&gt;
==ril==&lt;br /&gt;
* https://medium.com/technologymadeeasy/the-best-explanation-of-convolutional-neural-networks-on-the-internet-fbb8b1ad5df8&lt;br /&gt;
* http://nmhkahn.github.io/Casestudy-CNN&lt;br /&gt;
* https://stats.stackexchange.com/questions/205150/how-do-bottleneck-architectures-work-in-neural-networks&lt;br /&gt;
* https://www.quora.com/What-exactly-is-the-degradation-problem-that-Deep-Residual-Networks-try-to-alleviate&lt;br /&gt;
* dl with torch&lt;br /&gt;
* bias 붙여버리면 inv는 어케 구하나? D=0되지 않나? 구할필요 없나?&lt;br /&gt;
* [https://github.com/pytorch/examples pytorch examples ]&lt;br /&gt;
* [https://arxiv.org/abs/1603.05027 Identity Mappings in Deep Residual Networks] arXiv:1603.05027&lt;br /&gt;
* [http://www.fast.ai/2017/07/28/deep-learning-part-two-launch/ cutting edge deeplearning for coders]&lt;br /&gt;
&lt;br /&gt;
==nets==&lt;br /&gt;
* [[1118_Convolutional_Neural_Network|CNN]]&lt;br /&gt;
* [[AlexNet]]&lt;br /&gt;
* [[dilated cnn]]&lt;br /&gt;
* [[pathnet]]&lt;br /&gt;
* [[ResNet]]&lt;br /&gt;
* [[Fast RCNN]]&lt;br /&gt;
* [[Faster RCNN]]&lt;br /&gt;
* [[R-FCN]]&lt;br /&gt;
* [[GoogLeNet|Inception]] (GoogLeNet)&lt;br /&gt;
* [[fully convolutional networks]]&lt;br /&gt;
* [[FractalNets]]&lt;br /&gt;
* [[highway networks]]&lt;br /&gt;
* [[Memory networks]]&lt;br /&gt;
* [[DenseNet]]&lt;br /&gt;
* [[Network in Network|NIN]]&lt;br /&gt;
* [[Deeply Supervised Network|DSN]]&lt;br /&gt;
* [[Ladder Networks]]&lt;br /&gt;
* [[Deeply-Fused Nets|DFNs]]&lt;br /&gt;
* [[YOLO]]&lt;br /&gt;
&lt;br /&gt;
==general==&lt;br /&gt;
* [[0811 Affinity Propagation|Affinity Propagation]], [[Apcluster sparse]]&lt;br /&gt;
* &amp;lt;del&amp;gt;[[CUDA기타설치]]&amp;lt;/del&amp;gt;&lt;br /&gt;
* [[Learning to learn by GD by GD]]&lt;br /&gt;
* [[Generative Models]] (GAN, VAE, etc)&lt;br /&gt;
* [[Batch Normalization]]&lt;br /&gt;
* [[Mean Average Precision]]&lt;br /&gt;
* [https://medium.com/@kailashahirwar/essential-cheat-sheets-for-machine-learning-and-deep-learning-researchers-efb6a8ebd2e5 Essential Cheat Sheets for Machine Learning and Deep Learning Engineers]&lt;br /&gt;
* [http://fa.bianp.net/blog/2014/surrogate-loss-functions-in-machine-learning/ What is surrogate loss?]&lt;br /&gt;
* [[Exponential Linear Unit]]&lt;br /&gt;
* [[Neural net이 working하지 않는 37가지 이유]]&lt;br /&gt;
* [[deconvolution]]&lt;br /&gt;
* [[Sparse coding]]&lt;br /&gt;
* [http://mxnet.io/model_zoo/index.html MXNet Model Zoo]&lt;br /&gt;
* [[logistic regression]]&lt;br /&gt;
*[[0926 information bottleneck|information bottleneck]]&lt;br /&gt;
*[[0928 Artificial Curiosity|Artificial Curiosity]]&lt;br /&gt;
* sklearn examples&lt;br /&gt;
** [[sklearn preprocessing]]&lt;br /&gt;
&lt;br /&gt;
==x==&lt;br /&gt;
* [[Isolation Forest]]&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
		
	</entry>
	<entry>
		<id>http://samediff.kr/wiki/index.php?title=Machine_Learning&amp;diff=16214</id>
		<title>Machine Learning</title>
		<link rel="alternate" type="text/html" href="http://samediff.kr/wiki/index.php?title=Machine_Learning&amp;diff=16214"/>
		<updated>2021-07-08T07:44:47Z</updated>

		<summary type="html">&lt;p&gt;Admin: /* posts */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==by themes==&lt;br /&gt;
* [[Recommendation]]&lt;br /&gt;
* [[Face]]&lt;br /&gt;
* [[Person re-identification]]&lt;br /&gt;
* [[segmentation]]&lt;br /&gt;
&lt;br /&gt;
==posts==&lt;br /&gt;
* [[conv1d]]&lt;br /&gt;
* [[naive gradient descent]]&lt;br /&gt;
* [https://www.notion.so/nll-loss-57987c7b5f7342e4b6bc929c9b3be587 nll loss]&lt;br /&gt;
&lt;br /&gt;
==ril==&lt;br /&gt;
* https://medium.com/technologymadeeasy/the-best-explanation-of-convolutional-neural-networks-on-the-internet-fbb8b1ad5df8&lt;br /&gt;
* http://nmhkahn.github.io/Casestudy-CNN&lt;br /&gt;
* https://stats.stackexchange.com/questions/205150/how-do-bottleneck-architectures-work-in-neural-networks&lt;br /&gt;
* https://www.quora.com/What-exactly-is-the-degradation-problem-that-Deep-Residual-Networks-try-to-alleviate&lt;br /&gt;
* dl with torch&lt;br /&gt;
* bias 붙여버리면 inv는 어케 구하나? D=0되지 않나? 구할필요 없나?&lt;br /&gt;
* [https://github.com/pytorch/examples pytorch examples ]&lt;br /&gt;
* [https://arxiv.org/abs/1603.05027 Identity Mappings in Deep Residual Networks] arXiv:1603.05027&lt;br /&gt;
* [http://www.fast.ai/2017/07/28/deep-learning-part-two-launch/ cutting edge deeplearning for coders]&lt;br /&gt;
&lt;br /&gt;
==nets==&lt;br /&gt;
* [[1118_Convolutional_Neural_Network|CNN]]&lt;br /&gt;
* [[AlexNet]]&lt;br /&gt;
* [[dilated cnn]]&lt;br /&gt;
* [[pathnet]]&lt;br /&gt;
* [[ResNet]]&lt;br /&gt;
* [[Fast RCNN]]&lt;br /&gt;
* [[Faster RCNN]]&lt;br /&gt;
* [[R-FCN]]&lt;br /&gt;
* [[GoogLeNet|Inception]] (GoogLeNet)&lt;br /&gt;
* [[fully convolutional networks]]&lt;br /&gt;
* [[FractalNets]]&lt;br /&gt;
* [[highway networks]]&lt;br /&gt;
* [[Memory networks]]&lt;br /&gt;
* [[DenseNet]]&lt;br /&gt;
* [[Network in Network|NIN]]&lt;br /&gt;
* [[Deeply Supervised Network|DSN]]&lt;br /&gt;
* [[Ladder Networks]]&lt;br /&gt;
* [[Deeply-Fused Nets|DFNs]]&lt;br /&gt;
* [[YOLO]]&lt;br /&gt;
&lt;br /&gt;
==general==&lt;br /&gt;
* [[0811 Affinity Propagation|Affinity Propagation]], [[Apcluster sparse]]&lt;br /&gt;
* &amp;lt;del&amp;gt;[[CUDA기타설치]]&amp;lt;/del&amp;gt;&lt;br /&gt;
* [[Learning to learn by GD by GD]]&lt;br /&gt;
* [[Generative Models]] (GAN, VAE, etc)&lt;br /&gt;
* [[Batch Normalization]]&lt;br /&gt;
* [[Mean Average Precision]]&lt;br /&gt;
* [https://medium.com/@kailashahirwar/essential-cheat-sheets-for-machine-learning-and-deep-learning-researchers-efb6a8ebd2e5 Essential Cheat Sheets for Machine Learning and Deep Learning Engineers]&lt;br /&gt;
* [http://fa.bianp.net/blog/2014/surrogate-loss-functions-in-machine-learning/ What is surrogate loss?]&lt;br /&gt;
* [[Exponential Linear Unit]]&lt;br /&gt;
* [[Neural net이 working하지 않는 37가지 이유]]&lt;br /&gt;
* [[deconvolution]]&lt;br /&gt;
* [[Sparse coding]]&lt;br /&gt;
* [http://mxnet.io/model_zoo/index.html MXNet Model Zoo]&lt;br /&gt;
* [[logistic regression]]&lt;br /&gt;
*[[0926 information bottleneck|information bottleneck]]&lt;br /&gt;
*[[0928 Artificial Curiosity|Artificial Curiosity]]&lt;br /&gt;
* sklearn examples&lt;br /&gt;
** [[sklearn preprocessing]]&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
		
	</entry>
	<entry>
		<id>http://samediff.kr/wiki/index.php?title=Machine_Learning&amp;diff=16213</id>
		<title>Machine Learning</title>
		<link rel="alternate" type="text/html" href="http://samediff.kr/wiki/index.php?title=Machine_Learning&amp;diff=16213"/>
		<updated>2021-07-08T07:36:05Z</updated>

		<summary type="html">&lt;p&gt;Admin: /* general */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==by themes==&lt;br /&gt;
* [[Recommendation]]&lt;br /&gt;
* [[Face]]&lt;br /&gt;
* [[Person re-identification]]&lt;br /&gt;
* [[segmentation]]&lt;br /&gt;
&lt;br /&gt;
==posts==&lt;br /&gt;
* [[conv1d]]&lt;br /&gt;
* [[naive gradient descent]]&lt;br /&gt;
&lt;br /&gt;
==ril==&lt;br /&gt;
* https://medium.com/technologymadeeasy/the-best-explanation-of-convolutional-neural-networks-on-the-internet-fbb8b1ad5df8&lt;br /&gt;
* http://nmhkahn.github.io/Casestudy-CNN&lt;br /&gt;
* https://stats.stackexchange.com/questions/205150/how-do-bottleneck-architectures-work-in-neural-networks&lt;br /&gt;
* https://www.quora.com/What-exactly-is-the-degradation-problem-that-Deep-Residual-Networks-try-to-alleviate&lt;br /&gt;
* dl with torch&lt;br /&gt;
* bias 붙여버리면 inv는 어케 구하나? D=0되지 않나? 구할필요 없나?&lt;br /&gt;
* [https://github.com/pytorch/examples pytorch examples ]&lt;br /&gt;
* [https://arxiv.org/abs/1603.05027 Identity Mappings in Deep Residual Networks] arXiv:1603.05027&lt;br /&gt;
* [http://www.fast.ai/2017/07/28/deep-learning-part-two-launch/ cutting edge deeplearning for coders]&lt;br /&gt;
&lt;br /&gt;
==nets==&lt;br /&gt;
* [[1118_Convolutional_Neural_Network|CNN]]&lt;br /&gt;
* [[AlexNet]]&lt;br /&gt;
* [[dilated cnn]]&lt;br /&gt;
* [[pathnet]]&lt;br /&gt;
* [[ResNet]]&lt;br /&gt;
* [[Fast RCNN]]&lt;br /&gt;
* [[Faster RCNN]]&lt;br /&gt;
* [[R-FCN]]&lt;br /&gt;
* [[GoogLeNet|Inception]] (GoogLeNet)&lt;br /&gt;
* [[fully convolutional networks]]&lt;br /&gt;
* [[FractalNets]]&lt;br /&gt;
* [[highway networks]]&lt;br /&gt;
* [[Memory networks]]&lt;br /&gt;
* [[DenseNet]]&lt;br /&gt;
* [[Network in Network|NIN]]&lt;br /&gt;
* [[Deeply Supervised Network|DSN]]&lt;br /&gt;
* [[Ladder Networks]]&lt;br /&gt;
* [[Deeply-Fused Nets|DFNs]]&lt;br /&gt;
* [[YOLO]]&lt;br /&gt;
&lt;br /&gt;
==general==&lt;br /&gt;
* [[0811 Affinity Propagation|Affinity Propagation]], [[Apcluster sparse]]&lt;br /&gt;
* &amp;lt;del&amp;gt;[[CUDA기타설치]]&amp;lt;/del&amp;gt;&lt;br /&gt;
* [[Learning to learn by GD by GD]]&lt;br /&gt;
* [[Generative Models]] (GAN, VAE, etc)&lt;br /&gt;
* [[Batch Normalization]]&lt;br /&gt;
* [[Mean Average Precision]]&lt;br /&gt;
* [https://medium.com/@kailashahirwar/essential-cheat-sheets-for-machine-learning-and-deep-learning-researchers-efb6a8ebd2e5 Essential Cheat Sheets for Machine Learning and Deep Learning Engineers]&lt;br /&gt;
* [http://fa.bianp.net/blog/2014/surrogate-loss-functions-in-machine-learning/ What is surrogate loss?]&lt;br /&gt;
* [[Exponential Linear Unit]]&lt;br /&gt;
* [[Neural net이 working하지 않는 37가지 이유]]&lt;br /&gt;
* [[deconvolution]]&lt;br /&gt;
* [[Sparse coding]]&lt;br /&gt;
* [http://mxnet.io/model_zoo/index.html MXNet Model Zoo]&lt;br /&gt;
* [[logistic regression]]&lt;br /&gt;
*[[0926 information bottleneck|information bottleneck]]&lt;br /&gt;
*[[0928 Artificial Curiosity|Artificial Curiosity]]&lt;br /&gt;
* sklearn examples&lt;br /&gt;
** [[sklearn preprocessing]]&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
		
	</entry>
	<entry>
		<id>http://samediff.kr/wiki/index.php?title=%EB%8C%80%EB%AC%B8&amp;diff=16212</id>
		<title>대문</title>
		<link rel="alternate" type="text/html" href="http://samediff.kr/wiki/index.php?title=%EB%8C%80%EB%AC%B8&amp;diff=16212"/>
		<updated>2020-12-20T11:40:18Z</updated>

		<summary type="html">&lt;p&gt;Admin: /* scrap */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Special:RecentChanges| RecentChanges]]&lt;br /&gt;
==memo==&lt;br /&gt;
* [[Machine Learning]]&lt;br /&gt;
* [[Quiz/Math/Stat]]&lt;br /&gt;
* [[영어]]&lt;br /&gt;
* blog&lt;br /&gt;
**[[blog2020|2020~]]&lt;br /&gt;
**[[blog|2014~2019]] &lt;br /&gt;
**[[Pilhoon.tistory.com|2011~2014]]&lt;br /&gt;
**[[Pilhoon.tistory.com/2010|2010]], [[Pilhoon.tistory.com/2009|2009]], [[Pilhoon.tistory.com/2008|2008]], [[Pilhoon.tistory.com/2007|2007]], [[Pilhoon.tistory.com/2006|2006]], [[Pilhoon.tistory.com/2005|2005]], [[Pilhoon.tistory.com/2004|2004]]&lt;br /&gt;
* [[scratch]]&lt;br /&gt;
** [[tabs|todo, browser tabs]], [https://www.youcandothecube.com/solve-it/2-x-2-solution how to cube]&lt;br /&gt;
*&amp;lt;del&amp;gt;[[Read-it-later]], [[I've read it]], [[Watch-later]] &amp;lt;/del&amp;gt;&lt;br /&gt;
* [http://kor.pe.kr/util/4/charmap.htm 특수문자리스트]&lt;br /&gt;
&lt;br /&gt;
== articles ==&lt;br /&gt;
=== scrap ===&lt;br /&gt;
*[[탤런트 코드]] / [[재능의 탄생]] / [[재능은 어떻게 단련되는가?]] / [[배지영 소설]] / [[황정은 장편소설 : 百의 그림자]] / [[야만적인 앨리스씨]] / [[순수박물관]] / [[엄청나게 시끄럽고 믿을 수 없게 가까운]] / [[나는 이 세상에 없는 계절이다]] / [[남아 있는 나날]] / [[너무나 많은 시작]] / [[생강]] / [[사랑하기 때문에]] / [[구경꾼들]] / [[은교]] / [[우리는 언젠가 죽는다]]  / [[태연한 인생]] / [[죄와 속죄의 저편]] / [[환상통]] / [[상냥한 폭력의 시대]] / [[82년생 김지영]] / [[혼자 산다는 것에 대하여]] / [[유혹의 학교]] / [[구의 증명]] / [[천재들의 머니게임]] / [[투자전쟁]] / [[배움의 기술]] / [[사는게 뭐라고]] / [[0908 그것이 나만은 아니기를|그것이 나만은 아니기를]] / [[0903 라이어스 포커|라이어스 포커]] / [[0905 모든것을 기억하는 남자|모든것을 기억하는 남자]] / [[0905 뉴턴과 화폐위조범|뉴턴과 화폐위조범]] / [[1003 아주 짧게 소개하는 수학|아주 짧게 소개하는 수학]] / [[1004 1년 만에 기억력 천재가 된 남자|1년 만에 기억력 천재가 된 남자]] / [[1009 실력과 노력으로 성공했다는 당신에게|실력과 노력으로 성공했다는 당신에게]] / [[0826 부메랑|부메랑]] / [[0903 무신론 기자, 크리스천 과학자에게 따지다|무신론 기자, 크리스천 과학자에게 따지다]] / [[0903 디디의 우산|디디의 우산]] / [[0903 절망의 나라의 행복한 젊은이들|절망의 나라의 행복한 젊은이들]] / [[0906 팩트풀니스|팩트풀니스]] / [[0906 일베의 사상|일베의 사상]] / [[0907 나는 그것에 대해 아주 오랫동안 생각해|나는 그것에 대해 아주 오랫동안 생각해]] / [[0907 지금부터 재판을 시작하겠습니다|지금부터 재판을 시작하겠습니다]] / [[0907 가벼운 나날|가벼운 나날]] / [[0908 연애의 기억|연애의 기억]] / [[0909 메트릭 스튜디오 | 메트릭 스튜디오]] / [[0909 네이버 증권으로 배우는 주식투자 실전 가이드북|네이버 증권으로 배우는 주식투자 실전 가이드북]] / [[0909 우리는 차별에 찬성합니다|우리는 차별에 찬성합니다]] / [[0910 쇼코의 미소 | 쇼코의 미소 ]] / [[0910 사는게 뭐라고|사는게 뭐라고]] / [[0910 피터 린치의 이기는 투자|피터 린치의 이기는 투자]] / [https://www.notion.so/02ea40ffd065429dadc098a2dde70099 시간 있으면 나 좀 좋아해 줘] / [https://www.notion.so/26fadd454fa742c7a7cccd812dfe169d 인플레이션의 시대] / [https://www.notion.so/8c038739fae2481081eacbae22cfaa05 인플레이션]&lt;br /&gt;
&lt;br /&gt;
=== manual &amp;amp;amp; howto ===&lt;br /&gt;
*[[C++]],[[C]],[[gdb]]&lt;br /&gt;
*[[Bash]] &lt;br /&gt;
*[[Emacs]]/[[Vim]] &lt;br /&gt;
*[[Linux]] / [[Solaris]] / [[Windows]] / [[Mac OS]] / [[vmware]] / [[android]]&lt;br /&gt;
*commands &lt;br /&gt;
** [[awk]] / [[find]] / [[join]] / [[nice]] / [[rsync]] / [[sed]] / [[svn]] / [[tcpdump]] / [[tr]] / [[mutt]] / [[curl]] / [[column]] / [[zip]] / [[date]] / [[file]] / [[scp]] / [[printf]] / [[sort]] / [[tar]] / [[strace]]&lt;br /&gt;
* [[python]] / [[jupyter]] / [[matplotlib,seaborn]]&lt;br /&gt;
* [[R]] / [[numpy]] / [[matlab]] / [[sklearn]] / [[PIL_Image / opencv]]&lt;br /&gt;
* [[tensorflow]] / [[torch]] / [[mxnet]] / [[lua]] &lt;br /&gt;
* [[git]]&lt;br /&gt;
* [[TeX|TeX, MathJax]]&lt;br /&gt;
*&amp;lt;del&amp;gt;[[sqlite]]&amp;lt;/del&amp;gt;&lt;br /&gt;
*&amp;lt;del&amp;gt;[[RFCs]]&amp;lt;/del&amp;gt;&lt;br /&gt;
*&amp;lt;del&amp;gt;[[Java]] &amp;lt;/del&amp;gt;&lt;br /&gt;
*&amp;lt;del&amp;gt;[[Php]] &amp;lt;/del&amp;gt;&lt;br /&gt;
*[[mysql/hive/redis]]&lt;br /&gt;
* [https://guides.github.com/features/mastering-markdown/ github markdown guide] / [[markdown]]&lt;br /&gt;
&lt;br /&gt;
== 삽질들 ==&lt;br /&gt;
* [[1 million factorial]]&lt;br /&gt;
** [[prime numbers]]&lt;br /&gt;
* [[TV 무선으로 보기]] (실패)&lt;br /&gt;
* [[x60s에 ssd달기]]&lt;br /&gt;
* [[pdf 홀짝페이지 파일 합치기]]&lt;br /&gt;
&lt;br /&gt;
== 위키 ==&lt;br /&gt;
* [http://www.mediawiki.org/wiki/Manual:Configuration_settings 설정하기]&lt;br /&gt;
* [http://www.mediawiki.org/wiki/Manual:FAQ 미디어위키 FAQ]&lt;br /&gt;
* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce 미디어위키 발표 메일링 리스트]&lt;br /&gt;
* [http://meta.wikimedia.org/wiki/Help:Contents 미디어위키 help]&lt;br /&gt;
* [[내가 수정한 것들]]&lt;br /&gt;
* 기타참고&lt;br /&gt;
**[https://twitter.com/Floating_ghoti/status/1195678171917537281 40여분짜리 음악들]&lt;br /&gt;
**[http://en.wikipedia.org/wiki/Help:Wiki_markup wiki markup], [https://www.mediawiki.org/wiki/Help:Formatting media wiki Help:Formatting], [https://www.mediawiki.org/wiki/Extension:SyntaxHighlight media wiki SyntaxHighlight], [https://www.mediawiki.org/wiki/Help:Tables mediawiki table]&lt;br /&gt;
**[http://meta.wikimedia.org/wiki/Help:Advanced_editing advanced editing]&lt;br /&gt;
**[http://en.wikipedia.org/wiki/Wikipedia:Cheatsheet cheatsheet]&lt;br /&gt;
**[http://www.mediawiki.org/wiki/Help:Formatting Help:Formatting]&lt;br /&gt;
**[https://meta.wikimedia.org/wiki/Help:Displaying_a_formula 수식]&lt;br /&gt;
**[https://www.mediawiki.org/wiki/Topic:Ro5g5jyw935kaksb template variables within html tags] : &amp;lt;c&amp;gt;{{#tag:html | &amp;lt;blabla&amp;gt;{{{var}}}&amp;lt;/blabla&amp;gt;}}&amp;lt;/c&amp;gt;&lt;br /&gt;
**[https://www.mediawiki.org/wiki/Topic:Pzvu1613ewnfahcd get exact image path] : &amp;lt;c&amp;gt;{{filepath:}}&amp;lt;/c&amp;gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
		
	</entry>
	<entry>
		<id>http://samediff.kr/wiki/index.php?title=%EB%8C%80%EB%AC%B8&amp;diff=16211</id>
		<title>대문</title>
		<link rel="alternate" type="text/html" href="http://samediff.kr/wiki/index.php?title=%EB%8C%80%EB%AC%B8&amp;diff=16211"/>
		<updated>2020-12-19T15:25:39Z</updated>

		<summary type="html">&lt;p&gt;Admin: /* scrap */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Special:RecentChanges| RecentChanges]]&lt;br /&gt;
==memo==&lt;br /&gt;
* [[Machine Learning]]&lt;br /&gt;
* [[Quiz/Math/Stat]]&lt;br /&gt;
* [[영어]]&lt;br /&gt;
* blog&lt;br /&gt;
**[[blog2020|2020~]]&lt;br /&gt;
**[[blog|2014~2019]] &lt;br /&gt;
**[[Pilhoon.tistory.com|2011~2014]]&lt;br /&gt;
**[[Pilhoon.tistory.com/2010|2010]], [[Pilhoon.tistory.com/2009|2009]], [[Pilhoon.tistory.com/2008|2008]], [[Pilhoon.tistory.com/2007|2007]], [[Pilhoon.tistory.com/2006|2006]], [[Pilhoon.tistory.com/2005|2005]], [[Pilhoon.tistory.com/2004|2004]]&lt;br /&gt;
* [[scratch]]&lt;br /&gt;
** [[tabs|todo, browser tabs]], [https://www.youcandothecube.com/solve-it/2-x-2-solution how to cube]&lt;br /&gt;
*&amp;lt;del&amp;gt;[[Read-it-later]], [[I've read it]], [[Watch-later]] &amp;lt;/del&amp;gt;&lt;br /&gt;
* [http://kor.pe.kr/util/4/charmap.htm 특수문자리스트]&lt;br /&gt;
&lt;br /&gt;
== articles ==&lt;br /&gt;
=== scrap ===&lt;br /&gt;
*[[탤런트 코드]] / [[재능의 탄생]] / [[재능은 어떻게 단련되는가?]] / [[배지영 소설]] / [[황정은 장편소설 : 百의 그림자]] / [[야만적인 앨리스씨]] / [[순수박물관]] / [[엄청나게 시끄럽고 믿을 수 없게 가까운]] / [[나는 이 세상에 없는 계절이다]] / [[남아 있는 나날]] / [[너무나 많은 시작]] / [[생강]] / [[사랑하기 때문에]] / [[구경꾼들]] / [[은교]] / [[우리는 언젠가 죽는다]]  / [[태연한 인생]] / [[죄와 속죄의 저편]] / [[환상통]] / [[상냥한 폭력의 시대]] / [[82년생 김지영]] / [[혼자 산다는 것에 대하여]] / [[유혹의 학교]] / [[구의 증명]] / [[천재들의 머니게임]] / [[투자전쟁]] / [[배움의 기술]] / [[사는게 뭐라고]] / [[0908 그것이 나만은 아니기를|그것이 나만은 아니기를]] / [[0903 라이어스 포커|라이어스 포커]] / [[0905 모든것을 기억하는 남자|모든것을 기억하는 남자]] / [[0905 뉴턴과 화폐위조범|뉴턴과 화폐위조범]] / [[1003 아주 짧게 소개하는 수학|아주 짧게 소개하는 수학]] / [[1004 1년 만에 기억력 천재가 된 남자|1년 만에 기억력 천재가 된 남자]] / [[1009 실력과 노력으로 성공했다는 당신에게|실력과 노력으로 성공했다는 당신에게]] / [[0826 부메랑|부메랑]] / [[0903 무신론 기자, 크리스천 과학자에게 따지다|무신론 기자, 크리스천 과학자에게 따지다]] / [[0903 디디의 우산|디디의 우산]] / [[0903 절망의 나라의 행복한 젊은이들|절망의 나라의 행복한 젊은이들]] / [[0906 팩트풀니스|팩트풀니스]] / [[0906 일베의 사상|일베의 사상]] / [[0907 나는 그것에 대해 아주 오랫동안 생각해|나는 그것에 대해 아주 오랫동안 생각해]] / [[0907 지금부터 재판을 시작하겠습니다|지금부터 재판을 시작하겠습니다]] / [[0907 가벼운 나날|가벼운 나날]] / [[0908 연애의 기억|연애의 기억]] / [[0909 메트릭 스튜디오 | 메트릭 스튜디오]] / [[0909 네이버 증권으로 배우는 주식투자 실전 가이드북|네이버 증권으로 배우는 주식투자 실전 가이드북]] / [[0909 우리는 차별에 찬성합니다|우리는 차별에 찬성합니다]] / [[0910 쇼코의 미소 | 쇼코의 미소 ]] / [[0910 사는게 뭐라고|사는게 뭐라고]] / [[0910 피터 린치의 이기는 투자|피터 린치의 이기는 투자]] / [https://www.notion.so/02ea40ffd065429dadc098a2dde70099 시간 있으면 나 좀 좋아해 줘] / [https://www.notion.so/26fadd454fa742c7a7cccd812dfe169d 인플레이션의 시대]&lt;br /&gt;
&lt;br /&gt;
=== manual &amp;amp;amp; howto ===&lt;br /&gt;
*[[C++]],[[C]],[[gdb]]&lt;br /&gt;
*[[Bash]] &lt;br /&gt;
*[[Emacs]]/[[Vim]] &lt;br /&gt;
*[[Linux]] / [[Solaris]] / [[Windows]] / [[Mac OS]] / [[vmware]] / [[android]]&lt;br /&gt;
*commands &lt;br /&gt;
** [[awk]] / [[find]] / [[join]] / [[nice]] / [[rsync]] / [[sed]] / [[svn]] / [[tcpdump]] / [[tr]] / [[mutt]] / [[curl]] / [[column]] / [[zip]] / [[date]] / [[file]] / [[scp]] / [[printf]] / [[sort]] / [[tar]] / [[strace]]&lt;br /&gt;
* [[python]] / [[jupyter]] / [[matplotlib,seaborn]]&lt;br /&gt;
* [[R]] / [[numpy]] / [[matlab]] / [[sklearn]] / [[PIL_Image / opencv]]&lt;br /&gt;
* [[tensorflow]] / [[torch]] / [[mxnet]] / [[lua]] &lt;br /&gt;
* [[git]]&lt;br /&gt;
* [[TeX|TeX, MathJax]]&lt;br /&gt;
*&amp;lt;del&amp;gt;[[sqlite]]&amp;lt;/del&amp;gt;&lt;br /&gt;
*&amp;lt;del&amp;gt;[[RFCs]]&amp;lt;/del&amp;gt;&lt;br /&gt;
*&amp;lt;del&amp;gt;[[Java]] &amp;lt;/del&amp;gt;&lt;br /&gt;
*&amp;lt;del&amp;gt;[[Php]] &amp;lt;/del&amp;gt;&lt;br /&gt;
*[[mysql/hive/redis]]&lt;br /&gt;
* [https://guides.github.com/features/mastering-markdown/ github markdown guide] / [[markdown]]&lt;br /&gt;
&lt;br /&gt;
== 삽질들 ==&lt;br /&gt;
* [[1 million factorial]]&lt;br /&gt;
** [[prime numbers]]&lt;br /&gt;
* [[TV 무선으로 보기]] (실패)&lt;br /&gt;
* [[x60s에 ssd달기]]&lt;br /&gt;
* [[pdf 홀짝페이지 파일 합치기]]&lt;br /&gt;
&lt;br /&gt;
== 위키 ==&lt;br /&gt;
* [http://www.mediawiki.org/wiki/Manual:Configuration_settings 설정하기]&lt;br /&gt;
* [http://www.mediawiki.org/wiki/Manual:FAQ 미디어위키 FAQ]&lt;br /&gt;
* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce 미디어위키 발표 메일링 리스트]&lt;br /&gt;
* [http://meta.wikimedia.org/wiki/Help:Contents 미디어위키 help]&lt;br /&gt;
* [[내가 수정한 것들]]&lt;br /&gt;
* 기타참고&lt;br /&gt;
**[https://twitter.com/Floating_ghoti/status/1195678171917537281 40여분짜리 음악들]&lt;br /&gt;
**[http://en.wikipedia.org/wiki/Help:Wiki_markup wiki markup], [https://www.mediawiki.org/wiki/Help:Formatting media wiki Help:Formatting], [https://www.mediawiki.org/wiki/Extension:SyntaxHighlight media wiki SyntaxHighlight], [https://www.mediawiki.org/wiki/Help:Tables mediawiki table]&lt;br /&gt;
**[http://meta.wikimedia.org/wiki/Help:Advanced_editing advanced editing]&lt;br /&gt;
**[http://en.wikipedia.org/wiki/Wikipedia:Cheatsheet cheatsheet]&lt;br /&gt;
**[http://www.mediawiki.org/wiki/Help:Formatting Help:Formatting]&lt;br /&gt;
**[https://meta.wikimedia.org/wiki/Help:Displaying_a_formula 수식]&lt;br /&gt;
**[https://www.mediawiki.org/wiki/Topic:Ro5g5jyw935kaksb template variables within html tags] : &amp;lt;c&amp;gt;{{#tag:html | &amp;lt;blabla&amp;gt;{{{var}}}&amp;lt;/blabla&amp;gt;}}&amp;lt;/c&amp;gt;&lt;br /&gt;
**[https://www.mediawiki.org/wiki/Topic:Pzvu1613ewnfahcd get exact image path] : &amp;lt;c&amp;gt;{{filepath:}}&amp;lt;/c&amp;gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
		
	</entry>
	<entry>
		<id>http://samediff.kr/wiki/index.php?title=%EB%8C%80%EB%AC%B8&amp;diff=16210</id>
		<title>대문</title>
		<link rel="alternate" type="text/html" href="http://samediff.kr/wiki/index.php?title=%EB%8C%80%EB%AC%B8&amp;diff=16210"/>
		<updated>2020-12-19T10:48:41Z</updated>

		<summary type="html">&lt;p&gt;Admin: /* scrap */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Special:RecentChanges| RecentChanges]]&lt;br /&gt;
==memo==&lt;br /&gt;
* [[Machine Learning]]&lt;br /&gt;
* [[Quiz/Math/Stat]]&lt;br /&gt;
* [[영어]]&lt;br /&gt;
* blog&lt;br /&gt;
**[[blog2020|2020~]]&lt;br /&gt;
**[[blog|2014~2019]] &lt;br /&gt;
**[[Pilhoon.tistory.com|2011~2014]]&lt;br /&gt;
**[[Pilhoon.tistory.com/2010|2010]], [[Pilhoon.tistory.com/2009|2009]], [[Pilhoon.tistory.com/2008|2008]], [[Pilhoon.tistory.com/2007|2007]], [[Pilhoon.tistory.com/2006|2006]], [[Pilhoon.tistory.com/2005|2005]], [[Pilhoon.tistory.com/2004|2004]]&lt;br /&gt;
* [[scratch]]&lt;br /&gt;
** [[tabs|todo, browser tabs]], [https://www.youcandothecube.com/solve-it/2-x-2-solution how to cube]&lt;br /&gt;
*&amp;lt;del&amp;gt;[[Read-it-later]], [[I've read it]], [[Watch-later]] &amp;lt;/del&amp;gt;&lt;br /&gt;
* [http://kor.pe.kr/util/4/charmap.htm 특수문자리스트]&lt;br /&gt;
&lt;br /&gt;
== articles ==&lt;br /&gt;
=== scrap ===&lt;br /&gt;
*[[탤런트 코드]] / [[재능의 탄생]] / [[재능은 어떻게 단련되는가?]] / [[배지영 소설]] / [[황정은 장편소설 : 百의 그림자]] / [[야만적인 앨리스씨]] / [[순수박물관]] / [[엄청나게 시끄럽고 믿을 수 없게 가까운]] / [[나는 이 세상에 없는 계절이다]] / [[남아 있는 나날]] / [[너무나 많은 시작]] / [[생강]] / [[사랑하기 때문에]] / [[구경꾼들]] / [[은교]] / [[우리는 언젠가 죽는다]]  / [[태연한 인생]] / [[죄와 속죄의 저편]] / [[환상통]] / [[상냥한 폭력의 시대]] / [[82년생 김지영]] / [[혼자 산다는 것에 대하여]] / [[유혹의 학교]] / [[구의 증명]] / [[천재들의 머니게임]] / [[투자전쟁]] / [[배움의 기술]] / [[사는게 뭐라고]] / [[0908 그것이 나만은 아니기를|그것이 나만은 아니기를]] / [[0903 라이어스 포커|라이어스 포커]] / [[0905 모든것을 기억하는 남자|모든것을 기억하는 남자]] / [[0905 뉴턴과 화폐위조범|뉴턴과 화폐위조범]] / [[1003 아주 짧게 소개하는 수학|아주 짧게 소개하는 수학]] / [[1004 1년 만에 기억력 천재가 된 남자|1년 만에 기억력 천재가 된 남자]] / [[1009 실력과 노력으로 성공했다는 당신에게|실력과 노력으로 성공했다는 당신에게]] / [[0826 부메랑|부메랑]] / [[0903 무신론 기자, 크리스천 과학자에게 따지다|무신론 기자, 크리스천 과학자에게 따지다]] / [[0903 디디의 우산|디디의 우산]] / [[0903 절망의 나라의 행복한 젊은이들|절망의 나라의 행복한 젊은이들]] / [[0906 팩트풀니스|팩트풀니스]] / [[0906 일베의 사상|일베의 사상]] / [[0907 나는 그것에 대해 아주 오랫동안 생각해|나는 그것에 대해 아주 오랫동안 생각해]] / [[0907 지금부터 재판을 시작하겠습니다|지금부터 재판을 시작하겠습니다]] / [[0907 가벼운 나날|가벼운 나날]] / [[0908 연애의 기억|연애의 기억]] / [[0909 메트릭 스튜디오 | 메트릭 스튜디오]] / [[0909 네이버 증권으로 배우는 주식투자 실전 가이드북|네이버 증권으로 배우는 주식투자 실전 가이드북]] / [[0909 우리는 차별에 찬성합니다|우리는 차별에 찬성합니다]] / [[0910 쇼코의 미소 | 쇼코의 미소 ]] / [[0910 사는게 뭐라고|사는게 뭐라고]] / [[0910 피터 린치의 이기는 투자|피터 린치의 이기는 투자]] / [https://www.notion.so/02ea40ffd065429dadc098a2dde70099 시간 있으면 나 좀 좋아해 줘]&lt;br /&gt;
&lt;br /&gt;
=== manual &amp;amp;amp; howto ===&lt;br /&gt;
*[[C++]],[[C]],[[gdb]]&lt;br /&gt;
*[[Bash]] &lt;br /&gt;
*[[Emacs]]/[[Vim]] &lt;br /&gt;
*[[Linux]] / [[Solaris]] / [[Windows]] / [[Mac OS]] / [[vmware]] / [[android]]&lt;br /&gt;
*commands &lt;br /&gt;
** [[awk]] / [[find]] / [[join]] / [[nice]] / [[rsync]] / [[sed]] / [[svn]] / [[tcpdump]] / [[tr]] / [[mutt]] / [[curl]] / [[column]] / [[zip]] / [[date]] / [[file]] / [[scp]] / [[printf]] / [[sort]] / [[tar]] / [[strace]]&lt;br /&gt;
* [[python]] / [[jupyter]] / [[matplotlib,seaborn]]&lt;br /&gt;
* [[R]] / [[numpy]] / [[matlab]] / [[sklearn]] / [[PIL_Image / opencv]]&lt;br /&gt;
* [[tensorflow]] / [[torch]] / [[mxnet]] / [[lua]] &lt;br /&gt;
* [[git]]&lt;br /&gt;
* [[TeX|TeX, MathJax]]&lt;br /&gt;
*&amp;lt;del&amp;gt;[[sqlite]]&amp;lt;/del&amp;gt;&lt;br /&gt;
*&amp;lt;del&amp;gt;[[RFCs]]&amp;lt;/del&amp;gt;&lt;br /&gt;
*&amp;lt;del&amp;gt;[[Java]] &amp;lt;/del&amp;gt;&lt;br /&gt;
*&amp;lt;del&amp;gt;[[Php]] &amp;lt;/del&amp;gt;&lt;br /&gt;
*[[mysql/hive/redis]]&lt;br /&gt;
* [https://guides.github.com/features/mastering-markdown/ github markdown guide] / [[markdown]]&lt;br /&gt;
&lt;br /&gt;
== 삽질들 ==&lt;br /&gt;
* [[1 million factorial]]&lt;br /&gt;
** [[prime numbers]]&lt;br /&gt;
* [[TV 무선으로 보기]] (실패)&lt;br /&gt;
* [[x60s에 ssd달기]]&lt;br /&gt;
* [[pdf 홀짝페이지 파일 합치기]]&lt;br /&gt;
&lt;br /&gt;
== 위키 ==&lt;br /&gt;
* [http://www.mediawiki.org/wiki/Manual:Configuration_settings 설정하기]&lt;br /&gt;
* [http://www.mediawiki.org/wiki/Manual:FAQ 미디어위키 FAQ]&lt;br /&gt;
* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce 미디어위키 발표 메일링 리스트]&lt;br /&gt;
* [http://meta.wikimedia.org/wiki/Help:Contents 미디어위키 help]&lt;br /&gt;
* [[내가 수정한 것들]]&lt;br /&gt;
* 기타참고&lt;br /&gt;
**[https://twitter.com/Floating_ghoti/status/1195678171917537281 40여분짜리 음악들]&lt;br /&gt;
**[http://en.wikipedia.org/wiki/Help:Wiki_markup wiki markup], [https://www.mediawiki.org/wiki/Help:Formatting media wiki Help:Formatting], [https://www.mediawiki.org/wiki/Extension:SyntaxHighlight media wiki SyntaxHighlight], [https://www.mediawiki.org/wiki/Help:Tables mediawiki table]&lt;br /&gt;
**[http://meta.wikimedia.org/wiki/Help:Advanced_editing advanced editing]&lt;br /&gt;
**[http://en.wikipedia.org/wiki/Wikipedia:Cheatsheet cheatsheet]&lt;br /&gt;
**[http://www.mediawiki.org/wiki/Help:Formatting Help:Formatting]&lt;br /&gt;
**[https://meta.wikimedia.org/wiki/Help:Displaying_a_formula 수식]&lt;br /&gt;
**[https://www.mediawiki.org/wiki/Topic:Ro5g5jyw935kaksb template variables within html tags] : &amp;lt;c&amp;gt;{{#tag:html | &amp;lt;blabla&amp;gt;{{{var}}}&amp;lt;/blabla&amp;gt;}}&amp;lt;/c&amp;gt;&lt;br /&gt;
**[https://www.mediawiki.org/wiki/Topic:Pzvu1613ewnfahcd get exact image path] : &amp;lt;c&amp;gt;{{filepath:}}&amp;lt;/c&amp;gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
		
	</entry>
	<entry>
		<id>http://samediff.kr/wiki/index.php?title=%EB%8C%80%EB%AC%B8&amp;diff=16209</id>
		<title>대문</title>
		<link rel="alternate" type="text/html" href="http://samediff.kr/wiki/index.php?title=%EB%8C%80%EB%AC%B8&amp;diff=16209"/>
		<updated>2020-12-19T06:00:06Z</updated>

		<summary type="html">&lt;p&gt;Admin: /* scrap */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Special:RecentChanges| RecentChanges]]&lt;br /&gt;
==memo==&lt;br /&gt;
* [[Machine Learning]]&lt;br /&gt;
* [[Quiz/Math/Stat]]&lt;br /&gt;
* [[영어]]&lt;br /&gt;
* blog&lt;br /&gt;
**[[blog2020|2020~]]&lt;br /&gt;
**[[blog|2014~2019]] &lt;br /&gt;
**[[Pilhoon.tistory.com|2011~2014]]&lt;br /&gt;
**[[Pilhoon.tistory.com/2010|2010]], [[Pilhoon.tistory.com/2009|2009]], [[Pilhoon.tistory.com/2008|2008]], [[Pilhoon.tistory.com/2007|2007]], [[Pilhoon.tistory.com/2006|2006]], [[Pilhoon.tistory.com/2005|2005]], [[Pilhoon.tistory.com/2004|2004]]&lt;br /&gt;
* [[scratch]]&lt;br /&gt;
** [[tabs|todo, browser tabs]], [https://www.youcandothecube.com/solve-it/2-x-2-solution how to cube]&lt;br /&gt;
*&amp;lt;del&amp;gt;[[Read-it-later]], [[I've read it]], [[Watch-later]] &amp;lt;/del&amp;gt;&lt;br /&gt;
* [http://kor.pe.kr/util/4/charmap.htm 특수문자리스트]&lt;br /&gt;
&lt;br /&gt;
== articles ==&lt;br /&gt;
=== scrap ===&lt;br /&gt;
*[[탤런트 코드]] / [[재능의 탄생]] / [[재능은 어떻게 단련되는가?]] / [[배지영 소설]] / [[황정은 장편소설 : 百의 그림자]] / [[야만적인 앨리스씨]] / [[순수박물관]] / [[엄청나게 시끄럽고 믿을 수 없게 가까운]] / [[나는 이 세상에 없는 계절이다]] / [[남아 있는 나날]] / [[너무나 많은 시작]] / [[생강]] / [[사랑하기 때문에]] / [[구경꾼들]] / [[은교]] / [[우리는 언젠가 죽는다]]  / [[태연한 인생]] / [[죄와 속죄의 저편]] / [[환상통]] / [[상냥한 폭력의 시대]] / [[82년생 김지영]] / [[혼자 산다는 것에 대하여]] / [[유혹의 학교]] / [[구의 증명]] / [[천재들의 머니게임]] / [[투자전쟁]] / [[배움의 기술]] / [[사는게 뭐라고]] / [[0908 그것이 나만은 아니기를|그것이 나만은 아니기를]] / [[0903 라이어스 포커|라이어스 포커]] / [[0905 모든것을 기억하는 남자|모든것을 기억하는 남자]] / [[0905 뉴턴과 화폐위조범|뉴턴과 화폐위조범]] / [[1003 아주 짧게 소개하는 수학|아주 짧게 소개하는 수학]] / [[1004 1년 만에 기억력 천재가 된 남자|1년 만에 기억력 천재가 된 남자]] / [[1009 실력과 노력으로 성공했다는 당신에게|실력과 노력으로 성공했다는 당신에게]] / [[0826 부메랑|부메랑]] / [[0903 무신론 기자, 크리스천 과학자에게 따지다|무신론 기자, 크리스천 과학자에게 따지다]] / [[0903 디디의 우산|디디의 우산]] / [[0903 절망의 나라의 행복한 젊은이들|절망의 나라의 행복한 젊은이들]] / [[0906 팩트풀니스|팩트풀니스]] / [[0906 일베의 사상|일베의 사상]] / [[0907 나는 그것에 대해 아주 오랫동안 생각해|나는 그것에 대해 아주 오랫동안 생각해]] / [[0907 지금부터 재판을 시작하겠습니다|지금부터 재판을 시작하겠습니다]] / [[0907 가벼운 나날|가벼운 나날]] / [[0908 연애의 기억|연애의 기억]] / [[0909 메트릭 스튜디오 | 메트릭 스튜디오]] / [[0909 네이버 증권으로 배우는 주식투자 실전 가이드북|네이버 증권으로 배우는 주식투자 실전 가이드북]] / [[0909 우리는 차별에 찬성합니다|우리는 차별에 찬성합니다]] / [[0910 쇼코의 미소 | 쇼코의 미소 ]] / [[0910 사는게 뭐라고|사는게 뭐라고]] / [[0910 피터 린치의 이기는 투자|피터 린치의 이기는 투자]]&lt;br /&gt;
&lt;br /&gt;
=== manual &amp;amp;amp; howto ===&lt;br /&gt;
*[[C++]],[[C]],[[gdb]]&lt;br /&gt;
*[[Bash]] &lt;br /&gt;
*[[Emacs]]/[[Vim]] &lt;br /&gt;
*[[Linux]] / [[Solaris]] / [[Windows]] / [[Mac OS]] / [[vmware]] / [[android]]&lt;br /&gt;
*commands &lt;br /&gt;
** [[awk]] / [[find]] / [[join]] / [[nice]] / [[rsync]] / [[sed]] / [[svn]] / [[tcpdump]] / [[tr]] / [[mutt]] / [[curl]] / [[column]] / [[zip]] / [[date]] / [[file]] / [[scp]] / [[printf]] / [[sort]] / [[tar]] / [[strace]]&lt;br /&gt;
* [[python]] / [[jupyter]] / [[matplotlib,seaborn]]&lt;br /&gt;
* [[R]] / [[numpy]] / [[matlab]] / [[sklearn]] / [[PIL_Image / opencv]]&lt;br /&gt;
* [[tensorflow]] / [[torch]] / [[mxnet]] / [[lua]] &lt;br /&gt;
* [[git]]&lt;br /&gt;
* [[TeX|TeX, MathJax]]&lt;br /&gt;
*&amp;lt;del&amp;gt;[[sqlite]]&amp;lt;/del&amp;gt;&lt;br /&gt;
*&amp;lt;del&amp;gt;[[RFCs]]&amp;lt;/del&amp;gt;&lt;br /&gt;
*&amp;lt;del&amp;gt;[[Java]] &amp;lt;/del&amp;gt;&lt;br /&gt;
*&amp;lt;del&amp;gt;[[Php]] &amp;lt;/del&amp;gt;&lt;br /&gt;
*[[mysql/hive/redis]]&lt;br /&gt;
* [https://guides.github.com/features/mastering-markdown/ github markdown guide] / [[markdown]]&lt;br /&gt;
&lt;br /&gt;
== 삽질들 ==&lt;br /&gt;
* [[1 million factorial]]&lt;br /&gt;
** [[prime numbers]]&lt;br /&gt;
* [[TV 무선으로 보기]] (실패)&lt;br /&gt;
* [[x60s에 ssd달기]]&lt;br /&gt;
* [[pdf 홀짝페이지 파일 합치기]]&lt;br /&gt;
&lt;br /&gt;
== 위키 ==&lt;br /&gt;
* [http://www.mediawiki.org/wiki/Manual:Configuration_settings 설정하기]&lt;br /&gt;
* [http://www.mediawiki.org/wiki/Manual:FAQ 미디어위키 FAQ]&lt;br /&gt;
* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce 미디어위키 발표 메일링 리스트]&lt;br /&gt;
* [http://meta.wikimedia.org/wiki/Help:Contents 미디어위키 help]&lt;br /&gt;
* [[내가 수정한 것들]]&lt;br /&gt;
* 기타참고&lt;br /&gt;
**[https://twitter.com/Floating_ghoti/status/1195678171917537281 40여분짜리 음악들]&lt;br /&gt;
**[http://en.wikipedia.org/wiki/Help:Wiki_markup wiki markup], [https://www.mediawiki.org/wiki/Help:Formatting media wiki Help:Formatting], [https://www.mediawiki.org/wiki/Extension:SyntaxHighlight media wiki SyntaxHighlight], [https://www.mediawiki.org/wiki/Help:Tables mediawiki table]&lt;br /&gt;
**[http://meta.wikimedia.org/wiki/Help:Advanced_editing advanced editing]&lt;br /&gt;
**[http://en.wikipedia.org/wiki/Wikipedia:Cheatsheet cheatsheet]&lt;br /&gt;
**[http://www.mediawiki.org/wiki/Help:Formatting Help:Formatting]&lt;br /&gt;
**[https://meta.wikimedia.org/wiki/Help:Displaying_a_formula 수식]&lt;br /&gt;
**[https://www.mediawiki.org/wiki/Topic:Ro5g5jyw935kaksb template variables within html tags] : &amp;lt;c&amp;gt;{{#tag:html | &amp;lt;blabla&amp;gt;{{{var}}}&amp;lt;/blabla&amp;gt;}}&amp;lt;/c&amp;gt;&lt;br /&gt;
**[https://www.mediawiki.org/wiki/Topic:Pzvu1613ewnfahcd get exact image path] : &amp;lt;c&amp;gt;{{filepath:}}&amp;lt;/c&amp;gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
		
	</entry>
	<entry>
		<id>http://samediff.kr/wiki/index.php?title=%EB%8C%80%EB%AC%B8&amp;diff=16208</id>
		<title>대문</title>
		<link rel="alternate" type="text/html" href="http://samediff.kr/wiki/index.php?title=%EB%8C%80%EB%AC%B8&amp;diff=16208"/>
		<updated>2020-12-19T05:59:21Z</updated>

		<summary type="html">&lt;p&gt;Admin: /* scrap */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Special:RecentChanges| RecentChanges]]&lt;br /&gt;
==memo==&lt;br /&gt;
* [[Machine Learning]]&lt;br /&gt;
* [[Quiz/Math/Stat]]&lt;br /&gt;
* [[영어]]&lt;br /&gt;
* blog&lt;br /&gt;
**[[blog2020|2020~]]&lt;br /&gt;
**[[blog|2014~2019]] &lt;br /&gt;
**[[Pilhoon.tistory.com|2011~2014]]&lt;br /&gt;
**[[Pilhoon.tistory.com/2010|2010]], [[Pilhoon.tistory.com/2009|2009]], [[Pilhoon.tistory.com/2008|2008]], [[Pilhoon.tistory.com/2007|2007]], [[Pilhoon.tistory.com/2006|2006]], [[Pilhoon.tistory.com/2005|2005]], [[Pilhoon.tistory.com/2004|2004]]&lt;br /&gt;
* [[scratch]]&lt;br /&gt;
** [[tabs|todo, browser tabs]], [https://www.youcandothecube.com/solve-it/2-x-2-solution how to cube]&lt;br /&gt;
*&amp;lt;del&amp;gt;[[Read-it-later]], [[I've read it]], [[Watch-later]] &amp;lt;/del&amp;gt;&lt;br /&gt;
* [http://kor.pe.kr/util/4/charmap.htm 특수문자리스트]&lt;br /&gt;
&lt;br /&gt;
== articles ==&lt;br /&gt;
=== scrap ===&lt;br /&gt;
*[[탤런트 코드]] / [[재능의 탄생]] / [[재능은 어떻게 단련되는가?]] / [[배지영 소설]] / [[황정은 장편소설 : 百의 그림자]] / [[야만적인 앨리스씨]] / [[순수박물관]] / [[엄청나게 시끄럽고 믿을 수 없게 가까운]] / [[나는 이 세상에 없는 계절이다]] / [[남아 있는 나날]] / [[너무나 많은 시작]] / [[생강]] / [[사랑하기 때문에]] / [[구경꾼들]] / [[은교]] / [[우리는 언젠가 죽는다]]  / [[태연한 인생]] / [[죄와 속죄의 저편]] / [[환상통]] / [[상냥한 폭력의 시대]] / [[82년생 김지영]] / [[혼자 산다는 것에 대하여]] / [[유혹의 학교]] / [[구의 증명]] / [[천재들의 머니게임]] / [[투자전쟁]] / [[배움의 기술]] / [[사는게 뭐라고]] / [[0908 그것이 나만은 아니기를|그것이 나만은 아니기를]] / [[0903 라이어스 포커|라이어스 포커]] / [[0905 모든것을 기억하는 남자|모든것을 기억하는 남자]] / [[0905 뉴턴과 화폐위조범|뉴턴과 화폐위조범]] / [[1003 아주 짧게 소개하는 수학|아주 짧게 소개하는 수학]] / [[1004 1년 만에 기억력 천재가 된 남자|1년 만에 기억력 천재가 된 남자]] / [[1009 실력과 노력으로 성공했다는 당신에게|실력과 노력으로 성공했다는 당신에게]] / [[0826 부메랑|부메랑]] / [[0903 무신론 기자, 크리스천 과학자에게 따지다|무신론 기자, 크리스천 과학자에게 따지다]] / [[0903 디디의 우산|디디의 우산]] / [[0903 절망의 나라의 행복한 젊은이들|절망의 나라의 행복한 젊은이들]] / [[0906 팩트풀니스|팩트풀니스]] / [[0906 일베의 사상|일베의 사상]] / [[0907 나는 그것에 대해 아주 오랫동안 생각해|나는 그것에 대해 아주 오랫동안 생각해]] / [[0907 지금부터 재판을 시작하겠습니다|지금부터 재판을 시작하겠습니다]] / [[0907 가벼운 나날|가벼운 나날]] / [[0908 연애의 기억|연애의 기억]] / [[0909 메트릭 스튜디오 | 메트릭 스튜디오]] / [[0909 네이버 증권으로 배우는 주식투자 실전 가이드북|네이버 증권으로 배우는 주식투자 실전 가이드북]] / [[0909 우리는 차별에 찬성합니다|우리는 차별에 찬성합니다]] / [[0910 쇼코의 미소 | 쇼코의 미소 ]] / [[0910 사는게 뭐라고|사는게 뭐라고]] / [[0910 피터 린치의 이기는 투자|피터 린치의 이기는 투자]] / [[시간 있으면 나좀 좋아해줘]]&lt;br /&gt;
&lt;br /&gt;
=== manual &amp;amp;amp; howto ===&lt;br /&gt;
*[[C++]],[[C]],[[gdb]]&lt;br /&gt;
*[[Bash]] &lt;br /&gt;
*[[Emacs]]/[[Vim]] &lt;br /&gt;
*[[Linux]] / [[Solaris]] / [[Windows]] / [[Mac OS]] / [[vmware]] / [[android]]&lt;br /&gt;
*commands &lt;br /&gt;
** [[awk]] / [[find]] / [[join]] / [[nice]] / [[rsync]] / [[sed]] / [[svn]] / [[tcpdump]] / [[tr]] / [[mutt]] / [[curl]] / [[column]] / [[zip]] / [[date]] / [[file]] / [[scp]] / [[printf]] / [[sort]] / [[tar]] / [[strace]]&lt;br /&gt;
* [[python]] / [[jupyter]] / [[matplotlib,seaborn]]&lt;br /&gt;
* [[R]] / [[numpy]] / [[matlab]] / [[sklearn]] / [[PIL_Image / opencv]]&lt;br /&gt;
* [[tensorflow]] / [[torch]] / [[mxnet]] / [[lua]] &lt;br /&gt;
* [[git]]&lt;br /&gt;
* [[TeX|TeX, MathJax]]&lt;br /&gt;
*&amp;lt;del&amp;gt;[[sqlite]]&amp;lt;/del&amp;gt;&lt;br /&gt;
*&amp;lt;del&amp;gt;[[RFCs]]&amp;lt;/del&amp;gt;&lt;br /&gt;
*&amp;lt;del&amp;gt;[[Java]] &amp;lt;/del&amp;gt;&lt;br /&gt;
*&amp;lt;del&amp;gt;[[Php]] &amp;lt;/del&amp;gt;&lt;br /&gt;
*[[mysql/hive/redis]]&lt;br /&gt;
* [https://guides.github.com/features/mastering-markdown/ github markdown guide] / [[markdown]]&lt;br /&gt;
&lt;br /&gt;
== 삽질들 ==&lt;br /&gt;
* [[1 million factorial]]&lt;br /&gt;
** [[prime numbers]]&lt;br /&gt;
* [[TV 무선으로 보기]] (실패)&lt;br /&gt;
* [[x60s에 ssd달기]]&lt;br /&gt;
* [[pdf 홀짝페이지 파일 합치기]]&lt;br /&gt;
&lt;br /&gt;
== 위키 ==&lt;br /&gt;
* [http://www.mediawiki.org/wiki/Manual:Configuration_settings 설정하기]&lt;br /&gt;
* [http://www.mediawiki.org/wiki/Manual:FAQ 미디어위키 FAQ]&lt;br /&gt;
* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce 미디어위키 발표 메일링 리스트]&lt;br /&gt;
* [http://meta.wikimedia.org/wiki/Help:Contents 미디어위키 help]&lt;br /&gt;
* [[내가 수정한 것들]]&lt;br /&gt;
* 기타참고&lt;br /&gt;
**[https://twitter.com/Floating_ghoti/status/1195678171917537281 40여분짜리 음악들]&lt;br /&gt;
**[http://en.wikipedia.org/wiki/Help:Wiki_markup wiki markup], [https://www.mediawiki.org/wiki/Help:Formatting media wiki Help:Formatting], [https://www.mediawiki.org/wiki/Extension:SyntaxHighlight media wiki SyntaxHighlight], [https://www.mediawiki.org/wiki/Help:Tables mediawiki table]&lt;br /&gt;
**[http://meta.wikimedia.org/wiki/Help:Advanced_editing advanced editing]&lt;br /&gt;
**[http://en.wikipedia.org/wiki/Wikipedia:Cheatsheet cheatsheet]&lt;br /&gt;
**[http://www.mediawiki.org/wiki/Help:Formatting Help:Formatting]&lt;br /&gt;
**[https://meta.wikimedia.org/wiki/Help:Displaying_a_formula 수식]&lt;br /&gt;
**[https://www.mediawiki.org/wiki/Topic:Ro5g5jyw935kaksb template variables within html tags] : &amp;lt;c&amp;gt;{{#tag:html | &amp;lt;blabla&amp;gt;{{{var}}}&amp;lt;/blabla&amp;gt;}}&amp;lt;/c&amp;gt;&lt;br /&gt;
**[https://www.mediawiki.org/wiki/Topic:Pzvu1613ewnfahcd get exact image path] : &amp;lt;c&amp;gt;{{filepath:}}&amp;lt;/c&amp;gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
		
	</entry>
	<entry>
		<id>http://samediff.kr/wiki/index.php?title=0831_PR_AUC,_ROC_AUC&amp;diff=16207</id>
		<title>0831 PR AUC, ROC AUC</title>
		<link rel="alternate" type="text/html" href="http://samediff.kr/wiki/index.php?title=0831_PR_AUC,_ROC_AUC&amp;diff=16207"/>
		<updated>2020-12-08T01:54:55Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;웹에 돌아다니는 글 중엔 http://www.chioka.in/differences-between-roc-auc-and-pr-auc/ 이게 제일 나은것 같다.&lt;br /&gt;
&lt;br /&gt;
AUC는 Area under curve로, 일단 curve가 있어야 area가 나오는 것인데, 그 커브를 어떻게 그리느냐가 둘의 차이. 식은 그냥 외우면 되는 것인데 한방에 감이 오는게 없나 찾아보다가 없어서 그냥 만들었다.&lt;br /&gt;
&lt;br /&gt;
아래와 같이 전체 집합중에 positive, negative가 있다고 하고,&lt;br /&gt;
&lt;br /&gt;
[[image:posineg.png]]&lt;br /&gt;
&lt;br /&gt;
이중에 positive를 찍었다고 치자. 아래 파란부분이 classifier가 positive라고 찍은 부분이다. 그러면 FN, TP, FP, TN, Recall, Precision은 자동으로 나온다.&lt;br /&gt;
&lt;br /&gt;
[[image:posineg2.png]]&lt;br /&gt;
&lt;br /&gt;
ROC AUC는 x축이 FPR, y축이  TPR이 된다. Classifier가 내놓은 값의 threshold를 조정함에 따라 파란 부분이 점점 커질텐데, 그때 FPR의 변화에 따른 TPR의 변화를 보는 것이다. 당연히 FPR은 낮을수록 좋고, TPR은 빨리 높아질수록 좋다. threshold가 0까지 내려오면 결국 전체집합이 모두 파란색으로 칠해질 것인데, 이때 FPR은 1 이고, TPR도 1이 된다. ROC AUC의 오른쪽 위 끝점은 그래서 항상 (1,1)이다. &lt;br /&gt;
&lt;br /&gt;
분류기가 아무렇게나(랜덤하게) 그 결과를 낸다고 가정하면, 전체집합에서 P(ositive)와 N(egative)의 비율과 상관없이 ROC AUC는 정확히 0.5가 된다. 문제는,  P:N 비율이 그림처럼 1:1이 아닐때이다.  P가 극단적으로 적은 상황에서 랜덤하게 pick하면, AUC는 0.5가 똑같이 나오겠지만 False Positive가 너무 많아지는 것이다. 대부분의 detector는 positive가 매우 적은 상황에서 동작해야 하기 때문에, True Negative는 고려하지 않는 새로운 척도를 필요로 한다. &lt;br /&gt;
&lt;br /&gt;
PR AUC는 average precision인데, 이 말은 곧 recall의 변화에 따른 precision들을 다 모아서 평균을 낸다는 뜻이다. 위 그림에서 보는 것처럼 TN을 고려하지 않는다. P가 적은 상황에서 랜덤하게 pick한다면, FP가 TP보다 훨씬 빠르게 증가하기 때문에 AUC는 형편없게 된다. 그리고 recall에 따른 평균이기 때문에 랜덤하게 pick했을 때 기댓값은 0.5가 아니고, 초기 P:N=1:k라고 할 때, $\frac1{1+k}$가 된다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;disqus/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
		
	</entry>
	<entry>
		<id>http://samediff.kr/wiki/index.php?title=Matplotlib,seaborn&amp;diff=16206</id>
		<title>Matplotlib,seaborn</title>
		<link rel="alternate" type="text/html" href="http://samediff.kr/wiki/index.php?title=Matplotlib,seaborn&amp;diff=16206"/>
		<updated>2020-05-13T08:02:59Z</updated>

		<summary type="html">&lt;p&gt;Admin: /* use of ttf with seaborn */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== xticks on top ==&lt;br /&gt;
ref. https://matplotlib.org/3.1.3/gallery/ticks_and_spines/tick_xlabel_top.html&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
import matplotlib.pyplot as plt&lt;br /&gt;
import numpy as np&lt;br /&gt;
&lt;br /&gt;
plt.rcParams['xtick.bottom'] = plt.rcParams['xtick.labelbottom'] = False&lt;br /&gt;
plt.rcParams['xtick.top'] = plt.rcParams['xtick.labeltop'] = True&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== use of ttf with seaborn ==&lt;br /&gt;
ref. https://matplotlib.org/gallery/api/font_file.html , https://seaborn.pydata.org/generated/seaborn.set.html&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
import os&lt;br /&gt;
from matplotlib import font_manager as fm, rcParams&lt;br /&gt;
import matplotlib.pyplot as plt&lt;br /&gt;
&lt;br /&gt;
fig, ax = plt.subplots()&lt;br /&gt;
&lt;br /&gt;
fpath = os.path.join(rcParams[&amp;quot;datapath&amp;quot;], &amp;quot;fonts/ttf/cmr10.ttf&amp;quot;)&lt;br /&gt;
prop = fm.FontProperties(fname=fpath)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
p = sns.lineplot(ax=ax, data=data, palette='tab10', linewidth=1, dashes=dash_styles)&lt;br /&gt;
plt.setp(p.get_xticklabels(), rotation=90, fontproperties=prop)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== use ttf in matplotlib ==&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
import matplotlib.font_manager as fm&lt;br /&gt;
import matplotlib.pyplot as plt&lt;br /&gt;
&lt;br /&gt;
fig, ax = plt.subplots()&lt;br /&gt;
ax.plot(range(10))&lt;br /&gt;
&lt;br /&gt;
prop = fm.FontProperties(fname='/usr/share/fonts/truetype/groovygh.ttf')&lt;br /&gt;
ax.set_title('This is some random font', fontproperties=prop, size=32)&lt;br /&gt;
&lt;br /&gt;
plt.show()&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
https://stackoverflow.com/a/7728665/766330&lt;br /&gt;
&lt;br /&gt;
== rotate xticks ==&lt;br /&gt;
ref. https://www.drawingfromdata.com/how-to-rotate-axis-labels-in-seaborn-and-matplotlib , https://stackoverflow.com/questions/44954123/rotate-xtick-labels-in-seaborn-boxplot&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
ax = sns.boxplot(x='categories', y='oxygen', hue='target', data=df)&lt;br /&gt;
plt.setp(ax.get_xticklabels(), rotation=45)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Default style for more than 6 data series in seaborn ==&lt;br /&gt;
ref. https://github.com/mwaskom/seaborn/issues/1513&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
dash_styles = [&amp;quot;&amp;quot;,&lt;br /&gt;
               (4, 1.5),&lt;br /&gt;
               (1, 1),&lt;br /&gt;
               (3, 1, 1.5, 1),&lt;br /&gt;
               (5, 1, 1, 1),&lt;br /&gt;
               (5, 1, 2, 1, 2, 1),&lt;br /&gt;
               (2, 2, 3, 1.5),&lt;br /&gt;
               (1, 2.5, 3, 1.2)]&lt;br /&gt;
&lt;br /&gt;
sns.relplot(...,  dashes=dash_styles,...)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== set title size ==&lt;br /&gt;
ref. https://stackoverflow.com/a/36222162/766330&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
p = sns.lineplot(ax=ax, data=data, palette='tab10', linewidth=1, dashes=dash_styles)&lt;br /&gt;
p.axes.set_title(&amp;quot;EN&amp;quot;,fontsize=50)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
		
	</entry>
	<entry>
		<id>http://samediff.kr/wiki/index.php?title=1018_%EC%88%98%ED%95%99%EC%9D%B4_%ED%95%84%EC%9A%94%ED%95%9C_%EC%88%9C%EA%B0%84,_%EC%88%98%ED%95%99%EC%9D%98_%EA%B0%90%EA%B0%81&amp;diff=16205</id>
		<title>1018 수학이 필요한 순간, 수학의 감각</title>
		<link rel="alternate" type="text/html" href="http://samediff.kr/wiki/index.php?title=1018_%EC%88%98%ED%95%99%EC%9D%B4_%ED%95%84%EC%9A%94%ED%95%9C_%EC%88%9C%EA%B0%84,_%EC%88%98%ED%95%99%EC%9D%98_%EA%B0%90%EA%B0%81&amp;diff=16205"/>
		<updated>2020-03-19T11:38:56Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;최근에 [[1003 아주 짧게 소개하는 수학|아주 짧게 소개하는 수학]]을 읽으면서 같이 두권&amp;lt;ref&amp;gt;김민형, 『수학이 필요한 순간 ― 인간은 얼마나 깊게 생각할 수 있는가』. 인플루엔셜, 2018. ISBN : 9791186560785&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref&amp;gt;박병하, 『수학의 감각 ― 지극히 인문학적인 수학 이야기』행성B, 2018. ISBN : 9791187525820&amp;lt;/ref&amp;gt;을 주문해 읽었는데 둘 다 별로라서 혹시 보실분들은 다시한번 생각해보시라고 올림. ㅋㅋ&lt;br /&gt;
&lt;br /&gt;
얼마전에 읽은 오카 기요시의 『수학자의 공부』&amp;lt;ref&amp;gt;오카 기요시, 『수학자의 공부 ― 완벽한 몰입을 통해 학문과 인생의 기쁨 발견하기』, 정희성 옮김. 사람과나무사이,  2018. ISBN : 9791188635023&amp;lt;/ref&amp;gt;도 그렇지만, 수학자가 뭔가 자기 생각을 더해서 문학적인 작품을 쓰면 참 별로인것 같다 ㅎㅎㅎㅎ&lt;br /&gt;
&lt;br /&gt;
─&lt;br /&gt;
2020.3.19 &amp;lt;[https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=233423187 우리가 인생이라 부르는 것들 - 자기 삶의 언어를 찾는 열네 번의 시 강의]&amp;gt;라는 정말 혹하는 신간안내를 보고 주문할뻔 했는데 인플루엔셜이라는 출판사 이름이 왠지 낯익어서 찾아보니 위 &amp;lt;수학이 필요한 순간&amp;gt;이 나온 출판사였다. 그래서 그냥 거름. ㅋㅋㅋㅋ&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
		
	</entry>
	<entry>
		<id>http://samediff.kr/wiki/index.php?title=Git&amp;diff=16204</id>
		<title>Git</title>
		<link rel="alternate" type="text/html" href="http://samediff.kr/wiki/index.php?title=Git&amp;diff=16204"/>
		<updated>2020-03-04T12:16:49Z</updated>

		<summary type="html">&lt;p&gt;Admin: /* 로컬 무시하고 pull */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Port 22: Connection timed out ==&lt;br /&gt;
set port to 443 (&amp;lt;code&amp;gt;.ssh/config&amp;lt;/code&amp;gt;)&lt;br /&gt;
 Host github.com&lt;br /&gt;
 Hostname ssh.github.com&lt;br /&gt;
 Port 443&lt;br /&gt;
[https://stackoverflow.com/a/52817036/766330]&lt;br /&gt;
&lt;br /&gt;
== Clone submodule at already cloned repo ==&lt;br /&gt;
 git clone git://github.com/foo/bar.git&lt;br /&gt;
 cd bar&lt;br /&gt;
 git submodule update --init —recursive&lt;br /&gt;
[https://stackoverflow.com/a/4438292/766330]&lt;br /&gt;
&lt;br /&gt;
== Duplicating a repository ==&lt;br /&gt;
 git clone --bare https://github.com/exampleuser/old-repository.git&lt;br /&gt;
 cd old-repository.git&lt;br /&gt;
 git push --mirror https://github.com/exampleuser/new-repository.git&lt;br /&gt;
 cd ..&lt;br /&gt;
 rm -rf old-repository.git&lt;br /&gt;
&lt;br /&gt;
--bare와 --mirror가 핵심. refer [https://help.github.com/articles/duplicating-a-repository/ github help]&lt;br /&gt;
&lt;br /&gt;
==Remove a file from a Git repository without deleting it from the local filesystem==&lt;br /&gt;
 git rm --cached mylogfile.log&lt;br /&gt;
For a directory:&lt;br /&gt;
 git rm --cached -r mydirectory&lt;br /&gt;
http://stackoverflow.com/a/1143800/766330&lt;br /&gt;
&lt;br /&gt;
==가져와서 새로운 repo만들기==&lt;br /&gt;
# Create a new repo at github.&lt;br /&gt;
# Clone the repo from ''the-origin'' to your local machine.&lt;br /&gt;
# &amp;lt;pre&amp;gt;git remote rename origin upstream&amp;lt;/pre&amp;gt;&lt;br /&gt;
# &amp;lt;pre&amp;gt;git remote add origin url-of-mine&amp;lt;/pre&amp;gt;&lt;br /&gt;
# &amp;lt;pre&amp;gt;git push origin master&amp;lt;/pre&amp;gt;&lt;br /&gt;
To pull in patches from upstream, simply run &lt;br /&gt;
 git pull upstream master &amp;amp;&amp;amp; git push origin master&lt;br /&gt;
http://stackoverflow.com/a/5181968/766330&lt;br /&gt;
&lt;br /&gt;
==remote주소 알아내기==&lt;br /&gt;
If referential integrity has been broken:&lt;br /&gt;
 git config --get remote.origin.url&lt;br /&gt;
If referential integrity is intact:&lt;br /&gt;
 git remote show origin&lt;br /&gt;
If you want to use the value in the script, you would use the first command.&lt;br /&gt;
&lt;br /&gt;
https://stackoverflow.com/a/4089452/766330&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==remote 주소 변경==&lt;br /&gt;
 git remote set-url origin git@github.com:USERNAME/OTHERREPOSITORY.git&lt;br /&gt;
확인&lt;br /&gt;
 git remote -v&lt;br /&gt;
&lt;br /&gt;
==Update submodule==&lt;br /&gt;
 git submodule update --recursive&lt;br /&gt;
http://stackoverflow.com/a/10168693/766330&lt;br /&gt;
&lt;br /&gt;
==로컬 무시하고 pull==&lt;br /&gt;
 git reset --hard&lt;br /&gt;
 git pull&lt;br /&gt;
로컬을 아예 지우지는 않는 방법&lt;br /&gt;
 git stash&lt;br /&gt;
 git pull&lt;br /&gt;
 git stash pop&lt;br /&gt;
http://stackoverflow.com/a/4157261/766330&lt;br /&gt;
&lt;br /&gt;
==(git push) matching vs simple==&lt;br /&gt;
push all branches&lt;br /&gt;
 git config --global push.default matching&lt;br /&gt;
&lt;br /&gt;
push only the current branch&lt;br /&gt;
 git config --global push.default simple&lt;br /&gt;
&lt;br /&gt;
[https://stackoverflow.com/a/21865319/766330 출처]&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
		
	</entry>
	<entry>
		<id>http://samediff.kr/wiki/index.php?title=Vim&amp;diff=16203</id>
		<title>Vim</title>
		<link rel="alternate" type="text/html" href="http://samediff.kr/wiki/index.php?title=Vim&amp;diff=16203"/>
		<updated>2020-03-03T09:22:10Z</updated>

		<summary type="html">&lt;p&gt;Admin: /* vim mode in tmux */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==disable focus-in, focus-out event in terminal==&lt;br /&gt;
 printf &amp;quot;\e[?1004l&amp;quot;&lt;br /&gt;
[https://apple.stackexchange.com/a/220625/87063] [https://superuser.com/q/931873/108174]&lt;br /&gt;
&lt;br /&gt;
==paste large text to a file==&lt;br /&gt;
Do not use vim. Use &amp;lt;code&amp;gt;here document&amp;lt;/code&amp;gt;.[https://stackoverflow.com/a/2954835/766330]&lt;br /&gt;
 cat &amp;lt;&amp;lt; END &amp;gt; targetfile&lt;br /&gt;
 ...&lt;br /&gt;
 &amp;gt; END&lt;br /&gt;
&lt;br /&gt;
==Insert line numbers==&lt;br /&gt;
 :%s/^/\=printf('%-4d', line('.’))&lt;br /&gt;
&amp;lt;code&amp;gt;\=&amp;lt;/code&amp;gt; is the result of evaluating the following expression&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;%-4d&amp;lt;/code&amp;gt; is a left-aligned decimal number(&amp;lt;code&amp;gt;%4d&amp;lt;/code&amp;gt; is right-aligned)&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
 :%!nl -ba&lt;br /&gt;
&lt;br /&gt;
==Make Vim show ALL white spaces as a character==&lt;br /&gt;
 :set listchars=eol:¬,tab:&amp;gt;·,trail:~,extends:&amp;gt;,precedes:&amp;lt;,space:␣&lt;br /&gt;
 :set list [https://stackoverflow.com/a/29787362/766330] &lt;br /&gt;
아래와 같이 하면 탭등 구분은 안되지만 일단 공백이 다른 색으로 보임.&lt;br /&gt;
 :syntax on&lt;br /&gt;
 :set syntax=whitespace   [https://stackoverflow.com/a/19012475/766330]&lt;br /&gt;
&lt;br /&gt;
==autocomplete에 dash포함==&lt;br /&gt;
 :set lisp [http://stackoverflow.com/a/10789559/766330]&lt;br /&gt;
다른 방법으로는,&lt;br /&gt;
 :set iskeyword+=\- [http://stackoverflow.com/a/27070192/766330]&lt;br /&gt;
이용&lt;br /&gt;
&lt;br /&gt;
==Auto completion in command line mode==&lt;br /&gt;
 :help wildmode  &lt;br /&gt;
I am using &lt;br /&gt;
 :set wildemode=list:longest&lt;br /&gt;
&lt;br /&gt;
==Display line numbers==&lt;br /&gt;
 :highlight LineNr term=bold cterm=NONE ctermfg=DarkGrey ctermbg=NONE gui=NONE guifg=DarkGrey guibg=NONE  &lt;br /&gt;
[http://vim.wikia.com/wiki/Display_line_numbers]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==이미 읽은 파일의 인코딩 변경==&lt;br /&gt;
 :e ++enc=euc-kr&lt;br /&gt;
[http://kldp.org/node/32987]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==tab으로 편집==&lt;br /&gt;
 :help tabpage&lt;br /&gt;
 :help tabe&lt;br /&gt;
ref. {{c|:Te}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==temporary {{c|ic}} when searching==&lt;br /&gt;
insert '\c'(or '\C') at the end. (eg: {{c|/example\c}} will match with 'Example'). &lt;br /&gt;
&amp;lt;br&amp;gt;ref. {{c|:help pattern}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Gnu indent==&lt;br /&gt;
 function! GnuIndent()&lt;br /&gt;
    setlocal cinoptions=&amp;gt;4,n-2,{2,^-2,:2,=2,g0,h2,p5,t0,+2,(0,u0,w1,m1,//0&lt;br /&gt;
    setlocal shiftwidth=2&lt;br /&gt;
    setlocal tabstop=8&lt;br /&gt;
 endfunction&lt;br /&gt;
 au FileType c,cpp,php call GnuIndent()&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Copy using {{c|t}} command==&lt;br /&gt;
 :81,91t.&amp;lt;enter&amp;gt;&lt;br /&gt;
Copy the current lines to your present cursor location.&lt;br /&gt;
[http://stackoverflow.com/a/27501745/766330]&lt;br /&gt;
&lt;br /&gt;
==Change tab(\t) to space==&lt;br /&gt;
 :set expandtab&lt;br /&gt;
 {{red|:retab}}&lt;br /&gt;
[http://vim.wikia.com/wiki/Converting_tabs_to_spaces]&lt;br /&gt;
&lt;br /&gt;
==Reverse all lines==&lt;br /&gt;
 :g/^/m0&lt;br /&gt;
&amp;lt;c&amp;gt;g&amp;lt;/c&amp;gt;: reg match인 모든 곳에서 명령실행&lt;br /&gt;
&lt;br /&gt;
혹은 다음과 같이 한다.&lt;br /&gt;
 :%!tac&lt;br /&gt;
&lt;br /&gt;
[http://vim.wikia.com/wiki/Reverse_all_lines]&lt;br /&gt;
&lt;br /&gt;
==non-greedy match==&lt;br /&gt;
 .\{-}&lt;br /&gt;
[https://stackoverflow.com/a/1305957/766330]&lt;br /&gt;
&lt;br /&gt;
==Match except last parenthesis==&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;:%s/\(.\{-}\)\( \?([^)]*)\)\?$/[[\1]]\2/&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
‘optional한 마지막 괄호’만 빼고 다른 모든것을 매치하고 싶었는데, stackoverflow에 물어보니 ‘닫는괄호를 제외한 나머지’와 match하는게 핵심 아이디어 였음. 즉, 괄호 match에 다음을 쓰는 것.&lt;br /&gt;
 ([^)]*)[https://stackoverflow.com/a/45581831/766330]&lt;br /&gt;
&amp;lt;c&amp;gt;magic&amp;lt;/c&amp;gt;을 이용한 방법[https://stackoverflow.com/a/45600892/766330]이 더 깔끔해보이긴 함&lt;br /&gt;
 /\v(^\w+(\s\w+)?)&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;:%s,,[[\1]],g&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Regexp with &amp;lt;c&amp;gt;magic&amp;lt;/c&amp;gt;==&lt;br /&gt;
 \v&lt;br /&gt;
[http://vimdoc.sourceforge.net/htmldoc/pattern.html#/magic vimdoc]참고.&lt;br /&gt;
훨씬 깔끔해진다.&lt;br /&gt;
&lt;br /&gt;
==vim mode in tmux==&lt;br /&gt;
 set-window-option -g mode-keys vi&lt;br /&gt;
&lt;br /&gt;
그냥 enter로 빠져나오고 space로 selection시작. 움직임은 vim과 동일&lt;br /&gt;
[https://sanctum.geek.nz/arabesque/vi-mode-in-tmux/ ref]&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
		
	</entry>
	<entry>
		<id>http://samediff.kr/wiki/index.php?title=Vim&amp;diff=16202</id>
		<title>Vim</title>
		<link rel="alternate" type="text/html" href="http://samediff.kr/wiki/index.php?title=Vim&amp;diff=16202"/>
		<updated>2020-03-03T09:21:18Z</updated>

		<summary type="html">&lt;p&gt;Admin: /* Regexp with magic */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==disable focus-in, focus-out event in terminal==&lt;br /&gt;
 printf &amp;quot;\e[?1004l&amp;quot;&lt;br /&gt;
[https://apple.stackexchange.com/a/220625/87063] [https://superuser.com/q/931873/108174]&lt;br /&gt;
&lt;br /&gt;
==paste large text to a file==&lt;br /&gt;
Do not use vim. Use &amp;lt;code&amp;gt;here document&amp;lt;/code&amp;gt;.[https://stackoverflow.com/a/2954835/766330]&lt;br /&gt;
 cat &amp;lt;&amp;lt; END &amp;gt; targetfile&lt;br /&gt;
 ...&lt;br /&gt;
 &amp;gt; END&lt;br /&gt;
&lt;br /&gt;
==Insert line numbers==&lt;br /&gt;
 :%s/^/\=printf('%-4d', line('.’))&lt;br /&gt;
&amp;lt;code&amp;gt;\=&amp;lt;/code&amp;gt; is the result of evaluating the following expression&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;%-4d&amp;lt;/code&amp;gt; is a left-aligned decimal number(&amp;lt;code&amp;gt;%4d&amp;lt;/code&amp;gt; is right-aligned)&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
 :%!nl -ba&lt;br /&gt;
&lt;br /&gt;
==Make Vim show ALL white spaces as a character==&lt;br /&gt;
 :set listchars=eol:¬,tab:&amp;gt;·,trail:~,extends:&amp;gt;,precedes:&amp;lt;,space:␣&lt;br /&gt;
 :set list [https://stackoverflow.com/a/29787362/766330] &lt;br /&gt;
아래와 같이 하면 탭등 구분은 안되지만 일단 공백이 다른 색으로 보임.&lt;br /&gt;
 :syntax on&lt;br /&gt;
 :set syntax=whitespace   [https://stackoverflow.com/a/19012475/766330]&lt;br /&gt;
&lt;br /&gt;
==autocomplete에 dash포함==&lt;br /&gt;
 :set lisp [http://stackoverflow.com/a/10789559/766330]&lt;br /&gt;
다른 방법으로는,&lt;br /&gt;
 :set iskeyword+=\- [http://stackoverflow.com/a/27070192/766330]&lt;br /&gt;
이용&lt;br /&gt;
&lt;br /&gt;
==Auto completion in command line mode==&lt;br /&gt;
 :help wildmode  &lt;br /&gt;
I am using &lt;br /&gt;
 :set wildemode=list:longest&lt;br /&gt;
&lt;br /&gt;
==Display line numbers==&lt;br /&gt;
 :highlight LineNr term=bold cterm=NONE ctermfg=DarkGrey ctermbg=NONE gui=NONE guifg=DarkGrey guibg=NONE  &lt;br /&gt;
[http://vim.wikia.com/wiki/Display_line_numbers]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==이미 읽은 파일의 인코딩 변경==&lt;br /&gt;
 :e ++enc=euc-kr&lt;br /&gt;
[http://kldp.org/node/32987]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==tab으로 편집==&lt;br /&gt;
 :help tabpage&lt;br /&gt;
 :help tabe&lt;br /&gt;
ref. {{c|:Te}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==temporary {{c|ic}} when searching==&lt;br /&gt;
insert '\c'(or '\C') at the end. (eg: {{c|/example\c}} will match with 'Example'). &lt;br /&gt;
&amp;lt;br&amp;gt;ref. {{c|:help pattern}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Gnu indent==&lt;br /&gt;
 function! GnuIndent()&lt;br /&gt;
    setlocal cinoptions=&amp;gt;4,n-2,{2,^-2,:2,=2,g0,h2,p5,t0,+2,(0,u0,w1,m1,//0&lt;br /&gt;
    setlocal shiftwidth=2&lt;br /&gt;
    setlocal tabstop=8&lt;br /&gt;
 endfunction&lt;br /&gt;
 au FileType c,cpp,php call GnuIndent()&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Copy using {{c|t}} command==&lt;br /&gt;
 :81,91t.&amp;lt;enter&amp;gt;&lt;br /&gt;
Copy the current lines to your present cursor location.&lt;br /&gt;
[http://stackoverflow.com/a/27501745/766330]&lt;br /&gt;
&lt;br /&gt;
==Change tab(\t) to space==&lt;br /&gt;
 :set expandtab&lt;br /&gt;
 {{red|:retab}}&lt;br /&gt;
[http://vim.wikia.com/wiki/Converting_tabs_to_spaces]&lt;br /&gt;
&lt;br /&gt;
==Reverse all lines==&lt;br /&gt;
 :g/^/m0&lt;br /&gt;
&amp;lt;c&amp;gt;g&amp;lt;/c&amp;gt;: reg match인 모든 곳에서 명령실행&lt;br /&gt;
&lt;br /&gt;
혹은 다음과 같이 한다.&lt;br /&gt;
 :%!tac&lt;br /&gt;
&lt;br /&gt;
[http://vim.wikia.com/wiki/Reverse_all_lines]&lt;br /&gt;
&lt;br /&gt;
==non-greedy match==&lt;br /&gt;
 .\{-}&lt;br /&gt;
[https://stackoverflow.com/a/1305957/766330]&lt;br /&gt;
&lt;br /&gt;
==Match except last parenthesis==&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;:%s/\(.\{-}\)\( \?([^)]*)\)\?$/[[\1]]\2/&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
‘optional한 마지막 괄호’만 빼고 다른 모든것을 매치하고 싶었는데, stackoverflow에 물어보니 ‘닫는괄호를 제외한 나머지’와 match하는게 핵심 아이디어 였음. 즉, 괄호 match에 다음을 쓰는 것.&lt;br /&gt;
 ([^)]*)[https://stackoverflow.com/a/45581831/766330]&lt;br /&gt;
&amp;lt;c&amp;gt;magic&amp;lt;/c&amp;gt;을 이용한 방법[https://stackoverflow.com/a/45600892/766330]이 더 깔끔해보이긴 함&lt;br /&gt;
 /\v(^\w+(\s\w+)?)&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;:%s,,[[\1]],g&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Regexp with &amp;lt;c&amp;gt;magic&amp;lt;/c&amp;gt;==&lt;br /&gt;
 \v&lt;br /&gt;
[http://vimdoc.sourceforge.net/htmldoc/pattern.html#/magic vimdoc]참고.&lt;br /&gt;
훨씬 깔끔해진다.&lt;br /&gt;
&lt;br /&gt;
==vim mode in tmux==&lt;br /&gt;
 set-window-option -g mode-keys vi&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
		
	</entry>
	<entry>
		<id>http://samediff.kr/wiki/index.php?title=Matplotlib,seaborn&amp;diff=16201</id>
		<title>Matplotlib,seaborn</title>
		<link rel="alternate" type="text/html" href="http://samediff.kr/wiki/index.php?title=Matplotlib,seaborn&amp;diff=16201"/>
		<updated>2020-02-28T09:46:31Z</updated>

		<summary type="html">&lt;p&gt;Admin: /* Default style for more than 6 data series in seaborn */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== xticks on top ==&lt;br /&gt;
ref. https://matplotlib.org/3.1.3/gallery/ticks_and_spines/tick_xlabel_top.html&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
import matplotlib.pyplot as plt&lt;br /&gt;
import numpy as np&lt;br /&gt;
&lt;br /&gt;
plt.rcParams['xtick.bottom'] = plt.rcParams['xtick.labelbottom'] = False&lt;br /&gt;
plt.rcParams['xtick.top'] = plt.rcParams['xtick.labeltop'] = True&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== use of ttf with seaborn ==&lt;br /&gt;
ref. https://matplotlib.org/gallery/api/font_file.html , https://seaborn.pydata.org/generated/seaborn.set.html&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
import os&lt;br /&gt;
from matplotlib import font_manager as fm, rcParams&lt;br /&gt;
import matplotlib.pyplot as plt&lt;br /&gt;
&lt;br /&gt;
fig, ax = plt.subplots()&lt;br /&gt;
&lt;br /&gt;
fpath = os.path.join(rcParams[&amp;quot;datapath&amp;quot;], &amp;quot;fonts/ttf/cmr10.ttf&amp;quot;)&lt;br /&gt;
prop = fm.FontProperties(fname=fpath)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
p = sns.lineplot(ax=ax, data=data, palette='tab10', linewidth=1, dashes=dash_styles)&lt;br /&gt;
plt.setp(p.get_xticklabels(), rotation=90, fontproperties=prop)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== rotate xticks ==&lt;br /&gt;
ref. https://www.drawingfromdata.com/how-to-rotate-axis-labels-in-seaborn-and-matplotlib , https://stackoverflow.com/questions/44954123/rotate-xtick-labels-in-seaborn-boxplot&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
ax = sns.boxplot(x='categories', y='oxygen', hue='target', data=df)&lt;br /&gt;
plt.setp(ax.get_xticklabels(), rotation=45)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Default style for more than 6 data series in seaborn ==&lt;br /&gt;
ref. https://github.com/mwaskom/seaborn/issues/1513&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
dash_styles = [&amp;quot;&amp;quot;,&lt;br /&gt;
               (4, 1.5),&lt;br /&gt;
               (1, 1),&lt;br /&gt;
               (3, 1, 1.5, 1),&lt;br /&gt;
               (5, 1, 1, 1),&lt;br /&gt;
               (5, 1, 2, 1, 2, 1),&lt;br /&gt;
               (2, 2, 3, 1.5),&lt;br /&gt;
               (1, 2.5, 3, 1.2)]&lt;br /&gt;
&lt;br /&gt;
sns.relplot(...,  dashes=dash_styles,...)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== set title size ==&lt;br /&gt;
ref. https://stackoverflow.com/a/36222162/766330&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
p = sns.lineplot(ax=ax, data=data, palette='tab10', linewidth=1, dashes=dash_styles)&lt;br /&gt;
p.axes.set_title(&amp;quot;EN&amp;quot;,fontsize=50)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
		
	</entry>
	<entry>
		<id>http://samediff.kr/wiki/index.php?title=Matplotlib,seaborn&amp;diff=16200</id>
		<title>Matplotlib,seaborn</title>
		<link rel="alternate" type="text/html" href="http://samediff.kr/wiki/index.php?title=Matplotlib,seaborn&amp;diff=16200"/>
		<updated>2020-02-28T09:42:23Z</updated>

		<summary type="html">&lt;p&gt;Admin: /* rotate xticks */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== xticks on top ==&lt;br /&gt;
ref. https://matplotlib.org/3.1.3/gallery/ticks_and_spines/tick_xlabel_top.html&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
import matplotlib.pyplot as plt&lt;br /&gt;
import numpy as np&lt;br /&gt;
&lt;br /&gt;
plt.rcParams['xtick.bottom'] = plt.rcParams['xtick.labelbottom'] = False&lt;br /&gt;
plt.rcParams['xtick.top'] = plt.rcParams['xtick.labeltop'] = True&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== use of ttf with seaborn ==&lt;br /&gt;
ref. https://matplotlib.org/gallery/api/font_file.html , https://seaborn.pydata.org/generated/seaborn.set.html&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
import os&lt;br /&gt;
from matplotlib import font_manager as fm, rcParams&lt;br /&gt;
import matplotlib.pyplot as plt&lt;br /&gt;
&lt;br /&gt;
fig, ax = plt.subplots()&lt;br /&gt;
&lt;br /&gt;
fpath = os.path.join(rcParams[&amp;quot;datapath&amp;quot;], &amp;quot;fonts/ttf/cmr10.ttf&amp;quot;)&lt;br /&gt;
prop = fm.FontProperties(fname=fpath)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
p = sns.lineplot(ax=ax, data=data, palette='tab10', linewidth=1, dashes=dash_styles)&lt;br /&gt;
plt.setp(p.get_xticklabels(), rotation=90, fontproperties=prop)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== rotate xticks ==&lt;br /&gt;
ref. https://www.drawingfromdata.com/how-to-rotate-axis-labels-in-seaborn-and-matplotlib , https://stackoverflow.com/questions/44954123/rotate-xtick-labels-in-seaborn-boxplot&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
ax = sns.boxplot(x='categories', y='oxygen', hue='target', data=df)&lt;br /&gt;
plt.setp(ax.get_xticklabels(), rotation=45)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Default style for more than 6 data series in seaborn ==&lt;br /&gt;
ref. https://github.com/mwaskom/seaborn/issues/1513&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
dash_styles = [&amp;quot;&amp;quot;,&lt;br /&gt;
               (4, 1.5),&lt;br /&gt;
               (1, 1),&lt;br /&gt;
               (3, 1, 1.5, 1),&lt;br /&gt;
               (5, 1, 1, 1),&lt;br /&gt;
               (5, 1, 2, 1, 2, 1),&lt;br /&gt;
               (2, 2, 3, 1.5),&lt;br /&gt;
               (1, 2.5, 3, 1.2)]&lt;br /&gt;
&lt;br /&gt;
sns.relplot(...,  dashes=dash_styles,...)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
		
	</entry>
	<entry>
		<id>http://samediff.kr/wiki/index.php?title=Matplotlib,seaborn&amp;diff=16199</id>
		<title>Matplotlib,seaborn</title>
		<link rel="alternate" type="text/html" href="http://samediff.kr/wiki/index.php?title=Matplotlib,seaborn&amp;diff=16199"/>
		<updated>2020-02-28T09:41:35Z</updated>

		<summary type="html">&lt;p&gt;Admin: /* use of ttf with seaborn */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== xticks on top ==&lt;br /&gt;
ref. https://matplotlib.org/3.1.3/gallery/ticks_and_spines/tick_xlabel_top.html&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
import matplotlib.pyplot as plt&lt;br /&gt;
import numpy as np&lt;br /&gt;
&lt;br /&gt;
plt.rcParams['xtick.bottom'] = plt.rcParams['xtick.labelbottom'] = False&lt;br /&gt;
plt.rcParams['xtick.top'] = plt.rcParams['xtick.labeltop'] = True&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== use of ttf with seaborn ==&lt;br /&gt;
ref. https://matplotlib.org/gallery/api/font_file.html , https://seaborn.pydata.org/generated/seaborn.set.html&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
import os&lt;br /&gt;
from matplotlib import font_manager as fm, rcParams&lt;br /&gt;
import matplotlib.pyplot as plt&lt;br /&gt;
&lt;br /&gt;
fig, ax = plt.subplots()&lt;br /&gt;
&lt;br /&gt;
fpath = os.path.join(rcParams[&amp;quot;datapath&amp;quot;], &amp;quot;fonts/ttf/cmr10.ttf&amp;quot;)&lt;br /&gt;
prop = fm.FontProperties(fname=fpath)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
p = sns.lineplot(ax=ax, data=data, palette='tab10', linewidth=1, dashes=dash_styles)&lt;br /&gt;
plt.setp(p.get_xticklabels(), rotation=90, fontproperties=prop)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== rotate xticks ==&lt;br /&gt;
ref. https://www.drawingfromdata.com/how-to-rotate-axis-labels-in-seaborn-and-matplotlib , https://stackoverflow.com/questions/44954123/rotate-xtick-labels-in-seaborn-boxplot&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
ax = sns.boxplot(x='categories', y='oxygen', hue='target', data=df)&lt;br /&gt;
plt.setp(ax.get_xticklabels(), rotation=45)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
		
	</entry>
	<entry>
		<id>http://samediff.kr/wiki/index.php?title=Matplotlib,seaborn&amp;diff=16198</id>
		<title>Matplotlib,seaborn</title>
		<link rel="alternate" type="text/html" href="http://samediff.kr/wiki/index.php?title=Matplotlib,seaborn&amp;diff=16198"/>
		<updated>2020-02-28T09:40:00Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== xticks on top ==&lt;br /&gt;
ref. https://matplotlib.org/3.1.3/gallery/ticks_and_spines/tick_xlabel_top.html&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
import matplotlib.pyplot as plt&lt;br /&gt;
import numpy as np&lt;br /&gt;
&lt;br /&gt;
plt.rcParams['xtick.bottom'] = plt.rcParams['xtick.labelbottom'] = False&lt;br /&gt;
plt.rcParams['xtick.top'] = plt.rcParams['xtick.labeltop'] = True&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== use of ttf with seaborn ==&lt;br /&gt;
ref. https://matplotlib.org/gallery/api/font_file.html &lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
import os&lt;br /&gt;
from matplotlib import font_manager as fm, rcParams&lt;br /&gt;
import matplotlib.pyplot as plt&lt;br /&gt;
&lt;br /&gt;
fig, ax = plt.subplots()&lt;br /&gt;
&lt;br /&gt;
fpath = os.path.join(rcParams[&amp;quot;datapath&amp;quot;], &amp;quot;fonts/ttf/cmr10.ttf&amp;quot;)&lt;br /&gt;
prop = fm.FontProperties(fname=fpath)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
p = sns.lineplot(ax=ax, data=data, palette='tab10', linewidth=1, dashes=dash_styles)&lt;br /&gt;
plt.setp(p.get_xticklabels(), rotation=90, fontproperties=prop)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
		
	</entry>
	<entry>
		<id>http://samediff.kr/wiki/index.php?title=Matplotlib,seaborn&amp;diff=16197</id>
		<title>Matplotlib,seaborn</title>
		<link rel="alternate" type="text/html" href="http://samediff.kr/wiki/index.php?title=Matplotlib,seaborn&amp;diff=16197"/>
		<updated>2020-02-28T09:37:58Z</updated>

		<summary type="html">&lt;p&gt;Admin: 새 문서: == xticks on top == ref. https://matplotlib.org/3.1.3/gallery/ticks_and_spines/tick_xlabel_top.html  &amp;lt;source&amp;gt; import matplotlib.pyplot as plt import numpy as np  plt.rcParams['xtick.b...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== xticks on top ==&lt;br /&gt;
ref. https://matplotlib.org/3.1.3/gallery/ticks_and_spines/tick_xlabel_top.html&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
import matplotlib.pyplot as plt&lt;br /&gt;
import numpy as np&lt;br /&gt;
&lt;br /&gt;
plt.rcParams['xtick.bottom'] = plt.rcParams['xtick.labelbottom'] = False&lt;br /&gt;
plt.rcParams['xtick.top'] = plt.rcParams['xtick.labeltop'] = True&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
		
	</entry>
	<entry>
		<id>http://samediff.kr/wiki/index.php?title=%EB%8C%80%EB%AC%B8&amp;diff=16196</id>
		<title>대문</title>
		<link rel="alternate" type="text/html" href="http://samediff.kr/wiki/index.php?title=%EB%8C%80%EB%AC%B8&amp;diff=16196"/>
		<updated>2020-02-28T09:36:59Z</updated>

		<summary type="html">&lt;p&gt;Admin: /* manual &amp;amp;amp; howto */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Special:RecentChanges| RecentChanges]]&lt;br /&gt;
==memo==&lt;br /&gt;
* [[Machine Learning]]&lt;br /&gt;
* [[Quiz/Math/Stat]]&lt;br /&gt;
* [[영어]]&lt;br /&gt;
* blog&lt;br /&gt;
**[[blog2020|2020~]]&lt;br /&gt;
**[[blog|2014~2019]] &lt;br /&gt;
**[[Pilhoon.tistory.com|2011~2014]]&lt;br /&gt;
**[[Pilhoon.tistory.com/2010|2010]], [[Pilhoon.tistory.com/2009|2009]], [[Pilhoon.tistory.com/2008|2008]], [[Pilhoon.tistory.com/2007|2007]], [[Pilhoon.tistory.com/2006|2006]], [[Pilhoon.tistory.com/2005|2005]], [[Pilhoon.tistory.com/2004|2004]]&lt;br /&gt;
* [[scratch]]&lt;br /&gt;
** [[tabs|todo, browser tabs]], [https://www.youcandothecube.com/solve-it/2-x-2-solution how to cube]&lt;br /&gt;
*&amp;lt;del&amp;gt;[[Read-it-later]], [[I've read it]], [[Watch-later]] &amp;lt;/del&amp;gt;&lt;br /&gt;
* [http://kor.pe.kr/util/4/charmap.htm 특수문자리스트]&lt;br /&gt;
&lt;br /&gt;
== articles ==&lt;br /&gt;
=== scrap ===&lt;br /&gt;
*[[탤런트 코드]] / [[재능의 탄생]] / [[재능은 어떻게 단련되는가?]] / [[배지영 소설]] / [[황정은 장편소설 : 百의 그림자]] / [[야만적인 앨리스씨]] / [[순수박물관]] / [[엄청나게 시끄럽고 믿을 수 없게 가까운]] / [[나는 이 세상에 없는 계절이다]] / [[남아 있는 나날]] / [[너무나 많은 시작]] / [[생강]] / [[사랑하기 때문에]] / [[구경꾼들]] / [[은교]] / [[우리는 언젠가 죽는다]]  / [[태연한 인생]] / [[죄와 속죄의 저편]] / [[환상통]] / [[상냥한 폭력의 시대]] / [[82년생 김지영]] / [[혼자 산다는 것에 대하여]] / [[유혹의 학교]] / [[구의 증명]] / [[천재들의 머니게임]] / [[투자전쟁]] / [[배움의 기술]] / [[사는게 뭐라고]] / [[0908 그것이 나만은 아니기를|그것이 나만은 아니기를]] / [[0903 라이어스 포커|라이어스 포커]] / [[0905 모든것을 기억하는 남자|모든것을 기억하는 남자]] / [[0905 뉴턴과 화폐위조범|뉴턴과 화폐위조범]] / [[1003 아주 짧게 소개하는 수학|아주 짧게 소개하는 수학]] / [[1004 1년 만에 기억력 천재가 된 남자|1년 만에 기억력 천재가 된 남자]] / [[1009 실력과 노력으로 성공했다는 당신에게|실력과 노력으로 성공했다는 당신에게]] / [[0826 부메랑|부메랑]] / [[0903 무신론 기자, 크리스천 과학자에게 따지다|무신론 기자, 크리스천 과학자에게 따지다]] / [[0903 디디의 우산|디디의 우산]] / [[0903 절망의 나라의 행복한 젊은이들|절망의 나라의 행복한 젊은이들]] / [[0906 팩트풀니스|팩트풀니스]] / [[0906 일베의 사상|일베의 사상]] / [[0907 나는 그것에 대해 아주 오랫동안 생각해|나는 그것에 대해 아주 오랫동안 생각해]] / [[0907 지금부터 재판을 시작하겠습니다|지금부터 재판을 시작하겠습니다]] / [[0907 가벼운 나날|가벼운 나날]] / [[0908 연애의 기억|연애의 기억]] / [[0909 메트릭 스튜디오 | 메트릭 스튜디오]] / [[0909 네이버 증권으로 배우는 주식투자 실전 가이드북|네이버 증권으로 배우는 주식투자 실전 가이드북]] / [[0909 우리는 차별에 찬성합니다|우리는 차별에 찬성합니다]] / [[0910 쇼코의 미소 | 쇼코의 미소 ]] / [[0910 사는게 뭐라고|사는게 뭐라고]] / [[0910 피터 린치의 이기는 투자|피터 린치의 이기는 투자]]&lt;br /&gt;
&lt;br /&gt;
=== manual &amp;amp;amp; howto ===&lt;br /&gt;
*[[C++]],[[C]],[[gdb]]&lt;br /&gt;
*[[Bash]] &lt;br /&gt;
*[[Emacs]]/[[Vim]] &lt;br /&gt;
*[[Linux]] / [[Solaris]] / [[Windows]] / [[Mac OS]] / [[vmware]] / [[android]]&lt;br /&gt;
*commands &lt;br /&gt;
** [[awk]] / [[find]] / [[join]] / [[nice]] / [[rsync]] / [[sed]] / [[svn]] / [[tcpdump]] / [[tr]] / [[mutt]] / [[curl]] / [[column]] / [[zip]] / [[date]] / [[file]] / [[scp]] / [[printf]] / [[sort]] / [[tar]] / [[strace]]&lt;br /&gt;
* [[python]] / [[jupyter]] / [[matplotlib,seaborn]]&lt;br /&gt;
* [[R]] / [[numpy]] / [[matlab]] / [[sklearn]] / [[PIL_Image / opencv]]&lt;br /&gt;
* [[tensorflow]] / [[torch]] / [[mxnet]] / [[lua]] &lt;br /&gt;
* [[git]]&lt;br /&gt;
* [[TeX|TeX, MathJax]]&lt;br /&gt;
*&amp;lt;del&amp;gt;[[sqlite]]&amp;lt;/del&amp;gt;&lt;br /&gt;
*&amp;lt;del&amp;gt;[[RFCs]]&amp;lt;/del&amp;gt;&lt;br /&gt;
*&amp;lt;del&amp;gt;[[Java]] &amp;lt;/del&amp;gt;&lt;br /&gt;
*&amp;lt;del&amp;gt;[[Php]] &amp;lt;/del&amp;gt;&lt;br /&gt;
*[[mysql/hive/redis]]&lt;br /&gt;
* [https://guides.github.com/features/mastering-markdown/ github markdown guide] / [[markdown]]&lt;br /&gt;
&lt;br /&gt;
== 삽질들 ==&lt;br /&gt;
* [[1 million factorial]]&lt;br /&gt;
** [[prime numbers]]&lt;br /&gt;
* [[TV 무선으로 보기]] (실패)&lt;br /&gt;
* [[x60s에 ssd달기]]&lt;br /&gt;
* [[pdf 홀짝페이지 파일 합치기]]&lt;br /&gt;
&lt;br /&gt;
== 위키 ==&lt;br /&gt;
* [http://www.mediawiki.org/wiki/Manual:Configuration_settings 설정하기]&lt;br /&gt;
* [http://www.mediawiki.org/wiki/Manual:FAQ 미디어위키 FAQ]&lt;br /&gt;
* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce 미디어위키 발표 메일링 리스트]&lt;br /&gt;
* [http://meta.wikimedia.org/wiki/Help:Contents 미디어위키 help]&lt;br /&gt;
* [[내가 수정한 것들]]&lt;br /&gt;
* 기타참고&lt;br /&gt;
**[https://twitter.com/Floating_ghoti/status/1195678171917537281 40여분짜리 음악들]&lt;br /&gt;
**[http://en.wikipedia.org/wiki/Help:Wiki_markup wiki markup], [https://www.mediawiki.org/wiki/Help:Formatting media wiki Help:Formatting], [https://www.mediawiki.org/wiki/Extension:SyntaxHighlight media wiki SyntaxHighlight], [https://www.mediawiki.org/wiki/Help:Tables mediawiki table]&lt;br /&gt;
**[http://meta.wikimedia.org/wiki/Help:Advanced_editing advanced editing]&lt;br /&gt;
**[http://en.wikipedia.org/wiki/Wikipedia:Cheatsheet cheatsheet]&lt;br /&gt;
**[http://www.mediawiki.org/wiki/Help:Formatting Help:Formatting]&lt;br /&gt;
**[https://meta.wikimedia.org/wiki/Help:Displaying_a_formula 수식]&lt;br /&gt;
**[https://www.mediawiki.org/wiki/Topic:Ro5g5jyw935kaksb template variables within html tags] : &amp;lt;c&amp;gt;{{#tag:html | &amp;lt;blabla&amp;gt;{{{var}}}&amp;lt;/blabla&amp;gt;}}&amp;lt;/c&amp;gt;&lt;br /&gt;
**[https://www.mediawiki.org/wiki/Topic:Pzvu1613ewnfahcd get exact image path] : &amp;lt;c&amp;gt;{{filepath:}}&amp;lt;/c&amp;gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
		
	</entry>
	<entry>
		<id>http://samediff.kr/wiki/index.php?title=Windows&amp;diff=16195</id>
		<title>Windows</title>
		<link rel="alternate" type="text/html" href="http://samediff.kr/wiki/index.php?title=Windows&amp;diff=16195"/>
		<updated>2020-02-26T08:51:30Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Background Intelligent Transfer Service ===&lt;br /&gt;
부트캠프 설치 후 윈도우만 시작하면 팬이 미친듯이 돌아서 cpu사용량을 보니 저 프로세스가 엄청나게 먹고 있었음. 아래와 같이 해결. [https://answers.microsoft.com/en-us/windows/forum/all/background-intelligent-transfer-service-high-cpu/53cefa72-863e-48ab-8485-7d05e7ba9c3d 출처]&amp;lt;br&amp;gt;&lt;br /&gt;
1. Press Windows key + R, then type in services.msc and press Enter.&amp;lt;br&amp;gt;&lt;br /&gt;
2. Locate Background Intelligent Transfer Service, right-click on it and select Properties.&amp;lt;br&amp;gt;&lt;br /&gt;
3. Click on Stop and in Startup type, choose Disabled.&amp;lt;br&amp;gt;&lt;br /&gt;
4. Go to Recovery tab, change to Take No Action for First failure and Second failure.&amp;lt;br&amp;gt;&lt;br /&gt;
5. Click Apply and click OK to save changes.&amp;lt;br&amp;gt;&lt;br /&gt;
cpu온도는 Macs Fan Control 1.5.4 Free사용하면 쉽게 알 수 있다.&lt;br /&gt;
&lt;br /&gt;
=== ie9 ===&lt;br /&gt;
&lt;br /&gt;
[http://windows.microsoft.com/en-US/windows7/Internet-Explorer-keyboard-shortcuts 단축키일람]. ctrl+q 우연히 해보고 찾음. alt+d도 매우 쓸만할듯.&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
		
	</entry>
	<entry>
		<id>http://samediff.kr/wiki/index.php?title=%EB%8C%80%EB%AC%B8&amp;diff=16194</id>
		<title>대문</title>
		<link rel="alternate" type="text/html" href="http://samediff.kr/wiki/index.php?title=%EB%8C%80%EB%AC%B8&amp;diff=16194"/>
		<updated>2020-02-09T07:52:49Z</updated>

		<summary type="html">&lt;p&gt;Admin: /* memo */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Special:RecentChanges| RecentChanges]]&lt;br /&gt;
==memo==&lt;br /&gt;
* [[Machine Learning]]&lt;br /&gt;
* [[Quiz/Math/Stat]]&lt;br /&gt;
* [[영어]]&lt;br /&gt;
* blog&lt;br /&gt;
**[[blog2020|2020~]]&lt;br /&gt;
**[[blog|2014~2019]] &lt;br /&gt;
**[[Pilhoon.tistory.com|2011~2014]]&lt;br /&gt;
**[[Pilhoon.tistory.com/2010|2010]], [[Pilhoon.tistory.com/2009|2009]], [[Pilhoon.tistory.com/2008|2008]], [[Pilhoon.tistory.com/2007|2007]], [[Pilhoon.tistory.com/2006|2006]], [[Pilhoon.tistory.com/2005|2005]], [[Pilhoon.tistory.com/2004|2004]]&lt;br /&gt;
* [[scratch]]&lt;br /&gt;
** [[tabs|todo, browser tabs]], [https://www.youcandothecube.com/solve-it/2-x-2-solution how to cube]&lt;br /&gt;
*&amp;lt;del&amp;gt;[[Read-it-later]], [[I've read it]], [[Watch-later]] &amp;lt;/del&amp;gt;&lt;br /&gt;
* [http://kor.pe.kr/util/4/charmap.htm 특수문자리스트]&lt;br /&gt;
&lt;br /&gt;
== articles ==&lt;br /&gt;
=== scrap ===&lt;br /&gt;
*[[탤런트 코드]] / [[재능의 탄생]] / [[재능은 어떻게 단련되는가?]] / [[배지영 소설]] / [[황정은 장편소설 : 百의 그림자]] / [[야만적인 앨리스씨]] / [[순수박물관]] / [[엄청나게 시끄럽고 믿을 수 없게 가까운]] / [[나는 이 세상에 없는 계절이다]] / [[남아 있는 나날]] / [[너무나 많은 시작]] / [[생강]] / [[사랑하기 때문에]] / [[구경꾼들]] / [[은교]] / [[우리는 언젠가 죽는다]]  / [[태연한 인생]] / [[죄와 속죄의 저편]] / [[환상통]] / [[상냥한 폭력의 시대]] / [[82년생 김지영]] / [[혼자 산다는 것에 대하여]] / [[유혹의 학교]] / [[구의 증명]] / [[천재들의 머니게임]] / [[투자전쟁]] / [[배움의 기술]] / [[사는게 뭐라고]] / [[0908 그것이 나만은 아니기를|그것이 나만은 아니기를]] / [[0903 라이어스 포커|라이어스 포커]] / [[0905 모든것을 기억하는 남자|모든것을 기억하는 남자]] / [[0905 뉴턴과 화폐위조범|뉴턴과 화폐위조범]] / [[1003 아주 짧게 소개하는 수학|아주 짧게 소개하는 수학]] / [[1004 1년 만에 기억력 천재가 된 남자|1년 만에 기억력 천재가 된 남자]] / [[1009 실력과 노력으로 성공했다는 당신에게|실력과 노력으로 성공했다는 당신에게]] / [[0826 부메랑|부메랑]] / [[0903 무신론 기자, 크리스천 과학자에게 따지다|무신론 기자, 크리스천 과학자에게 따지다]] / [[0903 디디의 우산|디디의 우산]] / [[0903 절망의 나라의 행복한 젊은이들|절망의 나라의 행복한 젊은이들]] / [[0906 팩트풀니스|팩트풀니스]] / [[0906 일베의 사상|일베의 사상]] / [[0907 나는 그것에 대해 아주 오랫동안 생각해|나는 그것에 대해 아주 오랫동안 생각해]] / [[0907 지금부터 재판을 시작하겠습니다|지금부터 재판을 시작하겠습니다]] / [[0907 가벼운 나날|가벼운 나날]] / [[0908 연애의 기억|연애의 기억]] / [[0909 메트릭 스튜디오 | 메트릭 스튜디오]] / [[0909 네이버 증권으로 배우는 주식투자 실전 가이드북|네이버 증권으로 배우는 주식투자 실전 가이드북]] / [[0909 우리는 차별에 찬성합니다|우리는 차별에 찬성합니다]] / [[0910 쇼코의 미소 | 쇼코의 미소 ]] / [[0910 사는게 뭐라고|사는게 뭐라고]] / [[0910 피터 린치의 이기는 투자|피터 린치의 이기는 투자]]&lt;br /&gt;
&lt;br /&gt;
=== manual &amp;amp;amp; howto ===&lt;br /&gt;
*[[C++]],[[C]],[[gdb]]&lt;br /&gt;
*[[Bash]] &lt;br /&gt;
*[[Emacs]]/[[Vim]] &lt;br /&gt;
*[[Linux]] / [[Solaris]] / [[Windows]] / [[Mac OS]] / [[vmware]] / [[android]]&lt;br /&gt;
*commands &lt;br /&gt;
** [[awk]] / [[find]] / [[join]] / [[nice]] / [[rsync]] / [[sed]] / [[svn]] / [[tcpdump]] / [[tr]] / [[mutt]] / [[curl]] / [[column]] / [[zip]] / [[date]] / [[file]] / [[scp]] / [[printf]] / [[sort]] / [[tar]] / [[strace]]&lt;br /&gt;
* [[python]] / [[jupyter]]&lt;br /&gt;
* [[R]] / [[numpy]] / [[matlab]] / [[sklearn]] / [[PIL_Image / opencv]]&lt;br /&gt;
* [[tensorflow]] / [[torch]] / [[mxnet]] / [[lua]] &lt;br /&gt;
* [[git]]&lt;br /&gt;
* [[TeX|TeX, MathJax]]&lt;br /&gt;
*&amp;lt;del&amp;gt;[[sqlite]]&amp;lt;/del&amp;gt;&lt;br /&gt;
*&amp;lt;del&amp;gt;[[RFCs]]&amp;lt;/del&amp;gt;&lt;br /&gt;
*&amp;lt;del&amp;gt;[[Java]] &amp;lt;/del&amp;gt;&lt;br /&gt;
*&amp;lt;del&amp;gt;[[Php]] &amp;lt;/del&amp;gt;&lt;br /&gt;
*[[mysql/hive/redis]]&lt;br /&gt;
* [https://guides.github.com/features/mastering-markdown/ github markdown guide] / [[markdown]]&lt;br /&gt;
&lt;br /&gt;
== 삽질들 ==&lt;br /&gt;
* [[1 million factorial]]&lt;br /&gt;
** [[prime numbers]]&lt;br /&gt;
* [[TV 무선으로 보기]] (실패)&lt;br /&gt;
* [[x60s에 ssd달기]]&lt;br /&gt;
* [[pdf 홀짝페이지 파일 합치기]]&lt;br /&gt;
&lt;br /&gt;
== 위키 ==&lt;br /&gt;
* [http://www.mediawiki.org/wiki/Manual:Configuration_settings 설정하기]&lt;br /&gt;
* [http://www.mediawiki.org/wiki/Manual:FAQ 미디어위키 FAQ]&lt;br /&gt;
* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce 미디어위키 발표 메일링 리스트]&lt;br /&gt;
* [http://meta.wikimedia.org/wiki/Help:Contents 미디어위키 help]&lt;br /&gt;
* [[내가 수정한 것들]]&lt;br /&gt;
* 기타참고&lt;br /&gt;
**[https://twitter.com/Floating_ghoti/status/1195678171917537281 40여분짜리 음악들]&lt;br /&gt;
**[http://en.wikipedia.org/wiki/Help:Wiki_markup wiki markup], [https://www.mediawiki.org/wiki/Help:Formatting media wiki Help:Formatting], [https://www.mediawiki.org/wiki/Extension:SyntaxHighlight media wiki SyntaxHighlight], [https://www.mediawiki.org/wiki/Help:Tables mediawiki table]&lt;br /&gt;
**[http://meta.wikimedia.org/wiki/Help:Advanced_editing advanced editing]&lt;br /&gt;
**[http://en.wikipedia.org/wiki/Wikipedia:Cheatsheet cheatsheet]&lt;br /&gt;
**[http://www.mediawiki.org/wiki/Help:Formatting Help:Formatting]&lt;br /&gt;
**[https://meta.wikimedia.org/wiki/Help:Displaying_a_formula 수식]&lt;br /&gt;
**[https://www.mediawiki.org/wiki/Topic:Ro5g5jyw935kaksb template variables within html tags] : &amp;lt;c&amp;gt;{{#tag:html | &amp;lt;blabla&amp;gt;{{{var}}}&amp;lt;/blabla&amp;gt;}}&amp;lt;/c&amp;gt;&lt;br /&gt;
**[https://www.mediawiki.org/wiki/Topic:Pzvu1613ewnfahcd get exact image path] : &amp;lt;c&amp;gt;{{filepath:}}&amp;lt;/c&amp;gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
		
	</entry>
	<entry>
		<id>http://samediff.kr/wiki/index.php?title=%EB%82%B4%EA%B0%80_%EC%88%98%EC%A0%95%ED%95%9C_%EA%B2%83%EB%93%A4&amp;diff=16193</id>
		<title>내가 수정한 것들</title>
		<link rel="alternate" type="text/html" href="http://samediff.kr/wiki/index.php?title=%EB%82%B4%EA%B0%80_%EC%88%98%EC%A0%95%ED%95%9C_%EA%B2%83%EB%93%A4&amp;diff=16193"/>
		<updated>2020-02-01T14:24:16Z</updated>

		<summary type="html">&lt;p&gt;Admin: /* 수정한 것들 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== 수정한 것들 ==&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Extension:HighlightJS Extension:HighlightJS ]&lt;br /&gt;
** {{c|shl}}이라는 기괴한 태그를 또 추가하게 됨. 구문강조는 게쉬고 나발이고 그냥 js가 짱이다. 요즘엔 다 js가 짱이다.&lt;br /&gt;
&amp;lt;pre&amp;gt;wfLoadExtension( 'HighlightJS' ); &lt;br /&gt;
$wgHighlightJsMagic = 'shl';&lt;br /&gt;
$wgHighlightJsStyle = 'vs';&amp;lt;/pre&amp;gt;&lt;br /&gt;
* (아래 poem과 거의 비슷하게) WikiEditor에 특수문자 섹션 하나 추가 &lt;br /&gt;
** extensions/WikiEditor/modules/jquery.wikiEditor.toolbar.config.js 에 &amp;lt;c&amp;gt;special-characters-group-custom&amp;lt;/c&amp;gt;부분 추가. &lt;br /&gt;
** &amp;lt;c&amp;gt;languages/i18n/ko.json&amp;lt;/c&amp;gt;에도 &amp;lt;c&amp;gt;special-characters-group-custom&amp;lt;/c&amp;gt;부분 추가&lt;br /&gt;
** &amp;lt;del&amp;gt;includes/resourceloader/ResourceLoaderSpecialCharacterDataModule.php(구버전)&amp;lt;/del&amp;gt; resources/Resources.php 요기에도 추가&lt;br /&gt;
** resources/src/mediawiki.language/specialcharacters.json ★요게 가장 핵심. 여기에 적당한 기호들 추가. &amp;lt;c&amp;gt;&amp;quot;custom&amp;quot;&amp;lt;/c&amp;gt;부분. 특수문자는 [http://kor.pe.kr/util/4/charmap.htm 여기] 참고.&lt;br /&gt;
* (언제 설치한건지, 기본으로 있는건지 모르겠는데 어쨌건,) &amp;lt;c&amp;gt;extensions/WikiEditor&amp;lt;/c&amp;gt;에서 자동으로 &amp;lt;nowiki&amp;gt;&amp;lt;poem&amp;gt;&amp;lt;/nowiki&amp;gt;을 삽입하도록 버튼 하나 추가.  &lt;br /&gt;
** &amp;lt;c&amp;gt;modules/jquery.wikiEditor.toolbar.config.js&amp;lt;/c&amp;gt;에서 toolbar/main/groups/format/tools변수를 찾는다. bold와 italic 둘이 있는데 poem을 적당히 하나 추가한다.&lt;br /&gt;
** i18n/ko.json에 &amp;lt;c&amp;gt;&amp;quot;wikieditor-toolbar-tool-poem-example&amp;quot;: &amp;quot;\n&amp;quot;,&amp;lt;/c&amp;gt;를 적당한 곳에  넣고 extension.json에도 해당 변수 추가.&lt;br /&gt;
** underline하는것도 추가하려고 했는데 어찌된일인지 아이콘이 안나온다. &amp;lt;u&amp;gt;동작은 하는데&amp;lt;/u&amp;gt;.&lt;br /&gt;
* pdf업로드 가능하도록 [https://www.mediawiki.org/wiki/Manual:Configuring_file_uploads#Configuring_file_types configuration]수정 &lt;br /&gt;
* [https://www.mediawiki.org/wiki/Extension:PDFEmbed PDFEmbed extension]&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Extension:YouTube YouTube extension]&lt;br /&gt;
* 최대 업로드 크기 2M에서 10M으로 수정. /etc/php/7.0/apache2/php.ini 수정&lt;br /&gt;
*:&amp;lt;c&amp;gt;upload_max_filesize = 10M&amp;lt;/c&amp;gt;&lt;br /&gt;
*:&amp;lt;c&amp;gt;post_max_size = 10M&amp;lt;/c&amp;gt;&lt;br /&gt;
* google analytics [https://www.mediawiki.org/wiki/Extension:Google_Analytics_Integration] 2017.07.26&lt;br /&gt;
* https://www.mediawiki.org/wiki/Extension:AvbDisqus 설치함.&lt;br /&gt;
* 기본 폰트를 serif로 수정. ( skins/Vector/variables.less에서 sans-serif로 되어 있던 부분 두군데를 serif로 수정)&lt;br /&gt;
* &amp;lt;del&amp;gt;[https://www.mediawiki.org/wiki/Extension:MobileFrontend MobileFrontend] 설치 &amp;lt;/del&amp;gt;: Tweeki 스킨 설치하면 알아서 됨.&lt;br /&gt;
* &amp;lt;del&amp;gt;[https://www.mediawiki.org/wiki/Extension:MathJax MathJax] 설치&amp;lt;/del&amp;gt;&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Extension:SimpleMathJax SimpleMathJax]설치&lt;br /&gt;
* &amp;lt;del&amp;gt;[https://www.mediawiki.org/wiki/Extension:BacktickCode Backtick code] 설치 &amp;lt;/del&amp;gt; : 안되고 있음... 왜 안되는지 모름. 여튼 동작 안하는 중.&lt;br /&gt;
* BacktickCode가 동작하지 않아서 [https://www.mediawiki.org/wiki/Manual:Tag_extensions custom tag] &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;c&amp;gt;&amp;lt;/c&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; 만듦&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;extensions 폴더 안에 Courier.php파일 만들었음&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
&lt;br /&gt;
$wgHooks['ParserFirstCallInit'][] = 'CourierExtension::onParserSetup';&lt;br /&gt;
&lt;br /&gt;
class CourierExtension {&lt;br /&gt;
    // Register any render callbacks with the parser&lt;br /&gt;
    public static function onParserSetup( Parser $parser ) {&lt;br /&gt;
        // When the parser sees the &amp;lt;sample&amp;gt; tag, it executes renderTagSample (see below)&lt;br /&gt;
        $parser-&amp;gt;setHook( 'c', 'CourierExtension::renderTagSample' );&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    // Render &amp;lt;sample&amp;gt;&lt;br /&gt;
    public static function renderTagSample( $input, array $args, Parser $parser, PPFrame $frame ) {&lt;br /&gt;
        // Nothing exciting here, just escape the user-provided input and throw it back out again (as example) &lt;br /&gt;
        return &amp;quot;&amp;lt;span style='font-family:courier'&amp;gt;&amp;quot;.htmlspecialchars( $input ).&amp;quot;&amp;lt;/span&amp;gt;&amp;quot;;&lt;br /&gt;
    }                                &lt;br /&gt;
}&lt;br /&gt;
                                     &lt;br /&gt;
?&amp;gt;&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;LocalSettings.php에 아래 추가&lt;br /&gt;
&amp;lt;pre&amp;gt; require_once( &amp;quot;$IP/extensions/Courier/Courier.php&amp;quot; );&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Extension:TreeAndMenu Tree And Menu] 설치&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Extension:DeleteBatch DeleteBatch] 설치&lt;br /&gt;
* &amp;lt;del&amp;gt;includes/EditPage.php의 978line &amp;lt;pre&amp;gt;$this-&amp;gt;minoredit = true;&amp;lt;/pre&amp;gt;&amp;lt;/del&amp;gt; 이거 Admin&amp;gt;환경설정&amp;gt;편집에 '모든 편집에 기본적으로 사소한 편집을 표시'로 있음. &lt;br /&gt;
* tweeki skin[https://www.mediawiki.org/wiki/Skin:Tweeki] 설치&lt;br /&gt;
** 기본폰트 수정. bootstrap/css/bootstrap.min.css의 5번째 줄 15375 char에 'Georgia,serif'추가. (body{}에 추가}&lt;br /&gt;
*** 버전바뀌면서 char 위치는 바뀜. body를 찾을것.&lt;br /&gt;
** (위 수정한 것 바로 옆에) 글씨 크기 14pt에서 16pt로, line-height 1.42857143에서 25px로 변경. &amp;lt;del&amp;gt; line-height가 왜 1.42어쩌고냐 그런데.&amp;lt;/del&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;wfLoadExtension( 'Poem' );&amp;lt;/code&amp;gt;넣음. 미디어위키 기본이라 따로 뭔가 다운받을 필요는 없음.&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Extension:SyntaxHighlighter SyntaxHighlighter] &lt;br /&gt;
** 맨 뒤에 -er주의 그냥 SyntaxHighlight도 있음. &lt;br /&gt;
** 설치를 하긴 했으나, 별로 보기좋다는 생각이 안들어서 잘 안씀.&lt;br /&gt;
&lt;br /&gt;
== 아래는 구 버전 (위키 업데이트 하면서 모두 삭제됨. 무시할것) ==&lt;br /&gt;
*[http://www.mediawiki.org/wiki/Manual:Configuring_file_uploads file upload enable] &lt;br /&gt;
*[http://www.mediawiki.org/wiki/Syntaxhighlight syntax highlight extension] &lt;br /&gt;
*모바일 브라우저에서 너무 작게 보이는 문제&amp;lt;source lang=&amp;quot;html4strict&amp;quot;&amp;gt;&amp;lt;meta name=&amp;quot;viewport&amp;quot; content=&amp;quot;width=device-width&amp;quot; /&amp;gt;&amp;lt;/source&amp;gt;이걸로 해결 &lt;br /&gt;
**(QnA) [http://www.smashingmagazine.com/2011/01/11/keeping-web-users-safe-by-sanitizing-input-data/ 이 사이트]처럼 초기에는 작다가 확대하면 알아서 텍스트 폭이 변하는건 어떻게 하는걸까. 소스보기에서 &amp;lt;source lang=&amp;quot;html4strict&amp;quot;&amp;gt;&amp;lt;meta name=&amp;quot;viewport&amp;quot; content=&amp;quot;width=device-width; initial-scale=1.0&amp;quot;&amp;gt;&amp;lt;/source&amp;gt;이렇게 있었지만 이걸 내 위키에 넣어도 원하는대로 동작하지는 않았다.&amp;lt;sup&amp;gt;[https://developer.mozilla.org/en/Mobile/Viewport_meta_tag 참고자료]&amp;lt;/sup&amp;gt; &lt;br /&gt;
*fck editor에서 붙여넣기. 텍스트 뿐 아니라 서식도 가능하게 &lt;br /&gt;
**[http://www.mediawiki.org/wiki/Extension_talk:FCKeditor_(Official)#copy_and_paste_issues.3B_.22Paste_From_Word.22_icon_missing 여기]참고. &lt;br /&gt;
** &amp;lt;div&amp;gt;w/extensions/FCKeditor/fckeditor_config.js에서&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
// Setup the editor toolbar.&lt;br /&gt;
FCKConfig.ToolbarSets['Wiki'] = [&lt;br /&gt;
        ['Source'],&lt;br /&gt;
        ['Cut','Copy','Paste','PasteText','PasteWord','-','Print'],&lt;br /&gt;
        ['Undo','Redo','-','Find','Replace','-','SelectAll','RemoveFormat'],&lt;br /&gt;
        ['SpecialChar','Table','Image','Rule'],&lt;br /&gt;
&amp;lt;/source&amp;gt; 이렇게 함. 원래 &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;'PasteText','PasteWord'&amp;lt;/source&amp;gt;여기에 주석이 있었음. &amp;lt;/div&amp;gt;&lt;br /&gt;
**근데 이거 잘 안되고 있으니 다시 한번 잘 들여다볼것.&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
		
	</entry>
	<entry>
		<id>http://samediff.kr/wiki/index.php?title=%EB%82%B4%EA%B0%80_%EC%88%98%EC%A0%95%ED%95%9C_%EA%B2%83%EB%93%A4&amp;diff=16192</id>
		<title>내가 수정한 것들</title>
		<link rel="alternate" type="text/html" href="http://samediff.kr/wiki/index.php?title=%EB%82%B4%EA%B0%80_%EC%88%98%EC%A0%95%ED%95%9C_%EA%B2%83%EB%93%A4&amp;diff=16192"/>
		<updated>2020-02-01T13:27:54Z</updated>

		<summary type="html">&lt;p&gt;Admin: /* 수정한 것들 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== 수정한 것들 ==&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Extension:HighlightJS Extension:HighlightJS ]&lt;br /&gt;
** {{c|shl}}이라는 기괴한 태그를 또 추가하게 됨. 구문강조는 게쉬고 나발이고 그냥 js가 짱이다. 요즘엔 다 js가 짱이다.&lt;br /&gt;
&amp;lt;pre&amp;gt;wfLoadExtension( 'HighlightJS' ); &lt;br /&gt;
$wgHighlightJsMagic = 'shl';&lt;br /&gt;
$wgHighlightJsStyle = 'vs';&amp;lt;/pre&amp;gt;&lt;br /&gt;
* (아래 poem과 거의 비슷하게) WikiEditor에 특수문자 섹션 하나 추가 &lt;br /&gt;
** extensions/WikiEditor/modules/jquery.wikiEditor.toolbar.config.js 에 &amp;lt;c&amp;gt;special-characters-group-custom&amp;lt;/c&amp;gt;부분 추가. &lt;br /&gt;
** &amp;lt;c&amp;gt;languages/i18n/ko.json&amp;lt;/c&amp;gt;에도 &amp;lt;c&amp;gt;special-characters-group-custom&amp;lt;/c&amp;gt;부분 추가&lt;br /&gt;
** &amp;lt;del&amp;gt;includes/resourceloader/ResourceLoaderSpecialCharacterDataModule.php(구버전)&amp;lt;/del&amp;gt; resources/Resources.php 요기에도 추가&lt;br /&gt;
** resources/src/mediawiki.language/specialcharacters.json ★요게 가장 핵심. 여기에 적당한 기호들 추가. &amp;lt;c&amp;gt;&amp;quot;custom&amp;quot;&amp;lt;/c&amp;gt;부분. 특수문자는 [http://kor.pe.kr/util/4/charmap.htm 여기] 참고.&lt;br /&gt;
* (언제 설치한건지, 기본으로 있는건지 모르겠는데 어쨌건,) &amp;lt;c&amp;gt;extensions/WikiEditor&amp;lt;/c&amp;gt;에서 자동으로 &amp;lt;nowiki&amp;gt;&amp;lt;poem&amp;gt;&amp;lt;/nowiki&amp;gt;을 삽입하도록 버튼 하나 추가.  &lt;br /&gt;
** &amp;lt;c&amp;gt;modules/jquery.wikiEditor.toolbar.config.js&amp;lt;/c&amp;gt;에서 toolbar/main/groups/format/tools변수를 찾는다. bold와 italic 둘이 있는데 poem을 적당히 하나 추가한다.&lt;br /&gt;
** i18n/ko.json에 &amp;lt;c&amp;gt;&amp;quot;wikieditor-toolbar-tool-poem-example&amp;quot;: &amp;quot;\n&amp;quot;,&amp;lt;/c&amp;gt;를 적당한 곳에  넣고 extension.json에도 해당 변수 추가.&lt;br /&gt;
** underline하는것도 추가하려고 했는데 어찌된일인지 아이콘이 안나온다. &amp;lt;u&amp;gt;동작은 하는데&amp;lt;/u&amp;gt;.&lt;br /&gt;
* pdf업로드 가능하도록 [https://www.mediawiki.org/wiki/Manual:Configuring_file_uploads#Configuring_file_types configuration]수정 &lt;br /&gt;
* [https://www.mediawiki.org/wiki/Extension:PDFEmbed PDFEmbed extension]&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Extension:YouTube YouTube extension]&lt;br /&gt;
* 최대 업로드 크기 2M에서 10M으로 수정. /etc/php/7.0/apache2/php.ini 수정&lt;br /&gt;
*:&amp;lt;c&amp;gt;upload_max_filesize = 10M&amp;lt;/c&amp;gt;&lt;br /&gt;
*:&amp;lt;c&amp;gt;post_max_size = 10M&amp;lt;/c&amp;gt;&lt;br /&gt;
* google analytics [https://www.mediawiki.org/wiki/Extension:Google_Analytics_Integration] 2017.07.26&lt;br /&gt;
* https://www.mediawiki.org/wiki/Extension:AvbDisqus 설치함.&lt;br /&gt;
* 기본 폰트를 serif로 수정. ( skins/Vector/variables.less에서 sans-serif로 되어 있던 부분 두군데를 serif로 수정)&lt;br /&gt;
* &amp;lt;del&amp;gt;[https://www.mediawiki.org/wiki/Extension:MobileFrontend MobileFrontend] 설치 &amp;lt;/del&amp;gt;: Tweeki 스킨 설치하면 알아서 됨.&lt;br /&gt;
* &amp;lt;del&amp;gt;[https://www.mediawiki.org/wiki/Extension:MathJax MathJax] 설치&amp;lt;/del&amp;gt;&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Extension:SimpleMathJax SimpleMathJax]설치&lt;br /&gt;
* &amp;lt;del&amp;gt;[https://www.mediawiki.org/wiki/Extension:BacktickCode Backtick code] 설치 &amp;lt;/del&amp;gt; : 안되고 있음... 왜 안되는지 모름. 여튼 동작 안하는 중.&lt;br /&gt;
* BacktickCode가 동작하지 않아서 [https://www.mediawiki.org/wiki/Manual:Tag_extensions custom tag] &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;c&amp;gt;&amp;lt;/c&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; 만듦&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;extensions 폴더 안에 Courier.php파일 만들었음&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
&lt;br /&gt;
$wgHooks['ParserFirstCallInit'][] = 'CourierExtension::onParserSetup';&lt;br /&gt;
&lt;br /&gt;
class CourierExtension {&lt;br /&gt;
    // Register any render callbacks with the parser&lt;br /&gt;
    public static function onParserSetup( Parser $parser ) {&lt;br /&gt;
        // When the parser sees the &amp;lt;sample&amp;gt; tag, it executes renderTagSample (see below)&lt;br /&gt;
        $parser-&amp;gt;setHook( 'c', 'CourierExtension::renderTagSample' );&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    // Render &amp;lt;sample&amp;gt;&lt;br /&gt;
    public static function renderTagSample( $input, array $args, Parser $parser, PPFrame $frame ) {&lt;br /&gt;
        // Nothing exciting here, just escape the user-provided input and throw it back out again (as example) &lt;br /&gt;
        return &amp;quot;&amp;lt;span style='font-family:courier'&amp;gt;&amp;quot;.htmlspecialchars( $input ).&amp;quot;&amp;lt;/span&amp;gt;&amp;quot;;&lt;br /&gt;
    }                                &lt;br /&gt;
}&lt;br /&gt;
                                     &lt;br /&gt;
?&amp;gt;&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;LocalSettings.php에 아래 추가&lt;br /&gt;
&amp;lt;pre&amp;gt; require_once( &amp;quot;$IP/extensions/Courier/Courier.php&amp;quot; );&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Extension:TreeAndMenu Tree And Menu] 설치&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Extension:DeleteBatch DeleteBatch] 설치&lt;br /&gt;
* &amp;lt;del&amp;gt;includes/EditPage.php의 978line &amp;lt;pre&amp;gt;$this-&amp;gt;minoredit = true;&amp;lt;/pre&amp;gt;&amp;lt;/del&amp;gt; 이거 Admin&amp;gt;환경설정&amp;gt;편집에 '모든 편집에 기본적으로 사소한 편집을 표시'로 있음. &lt;br /&gt;
* &amp;lt;del&amp;gt;tweeki skin[https://www.mediawiki.org/wiki/Skin:Tweeki] 설치&amp;lt;/del&amp;gt; 3.2로 업데이트하면서 에러로 제거.&lt;br /&gt;
** &amp;lt;del&amp;gt;기본폰트 수정. bootstrap/css/bootstrap.min.css의 5번째 줄 15375 char에 'Georgia,serif'추가. (body{}에 추가}&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;(위 수정한 것 바로 옆에) 글씨 크기 14pt에서 16pt로, line-height 1.42857143에서 17로 변경.&amp;lt;/del&amp;gt; &amp;lt;del&amp;gt; line-height가 너무 아스트랄한데?&amp;lt;/del&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;wfLoadExtension( 'Poem' );&amp;lt;/code&amp;gt;넣음. 미디어위키 기본이라 따로 뭔가 다운받을 필요는 없음.&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Extension:SyntaxHighlighter SyntaxHighlighter] &lt;br /&gt;
** 맨 뒤에 -er주의 그냥 SyntaxHighlight도 있음. &lt;br /&gt;
** 설치를 하긴 했으나, 별로 보기좋다는 생각이 안들어서 잘 안씀.&lt;br /&gt;
&lt;br /&gt;
== 아래는 구 버전 (위키 업데이트 하면서 모두 삭제됨. 무시할것) ==&lt;br /&gt;
*[http://www.mediawiki.org/wiki/Manual:Configuring_file_uploads file upload enable] &lt;br /&gt;
*[http://www.mediawiki.org/wiki/Syntaxhighlight syntax highlight extension] &lt;br /&gt;
*모바일 브라우저에서 너무 작게 보이는 문제&amp;lt;source lang=&amp;quot;html4strict&amp;quot;&amp;gt;&amp;lt;meta name=&amp;quot;viewport&amp;quot; content=&amp;quot;width=device-width&amp;quot; /&amp;gt;&amp;lt;/source&amp;gt;이걸로 해결 &lt;br /&gt;
**(QnA) [http://www.smashingmagazine.com/2011/01/11/keeping-web-users-safe-by-sanitizing-input-data/ 이 사이트]처럼 초기에는 작다가 확대하면 알아서 텍스트 폭이 변하는건 어떻게 하는걸까. 소스보기에서 &amp;lt;source lang=&amp;quot;html4strict&amp;quot;&amp;gt;&amp;lt;meta name=&amp;quot;viewport&amp;quot; content=&amp;quot;width=device-width; initial-scale=1.0&amp;quot;&amp;gt;&amp;lt;/source&amp;gt;이렇게 있었지만 이걸 내 위키에 넣어도 원하는대로 동작하지는 않았다.&amp;lt;sup&amp;gt;[https://developer.mozilla.org/en/Mobile/Viewport_meta_tag 참고자료]&amp;lt;/sup&amp;gt; &lt;br /&gt;
*fck editor에서 붙여넣기. 텍스트 뿐 아니라 서식도 가능하게 &lt;br /&gt;
**[http://www.mediawiki.org/wiki/Extension_talk:FCKeditor_(Official)#copy_and_paste_issues.3B_.22Paste_From_Word.22_icon_missing 여기]참고. &lt;br /&gt;
** &amp;lt;div&amp;gt;w/extensions/FCKeditor/fckeditor_config.js에서&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
// Setup the editor toolbar.&lt;br /&gt;
FCKConfig.ToolbarSets['Wiki'] = [&lt;br /&gt;
        ['Source'],&lt;br /&gt;
        ['Cut','Copy','Paste','PasteText','PasteWord','-','Print'],&lt;br /&gt;
        ['Undo','Redo','-','Find','Replace','-','SelectAll','RemoveFormat'],&lt;br /&gt;
        ['SpecialChar','Table','Image','Rule'],&lt;br /&gt;
&amp;lt;/source&amp;gt; 이렇게 함. 원래 &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;'PasteText','PasteWord'&amp;lt;/source&amp;gt;여기에 주석이 있었음. &amp;lt;/div&amp;gt;&lt;br /&gt;
**근데 이거 잘 안되고 있으니 다시 한번 잘 들여다볼것.&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
		
	</entry>
	<entry>
		<id>http://samediff.kr/wiki/index.php?title=%EB%82%B4%EA%B0%80_%EC%88%98%EC%A0%95%ED%95%9C_%EA%B2%83%EB%93%A4&amp;diff=16189</id>
		<title>내가 수정한 것들</title>
		<link rel="alternate" type="text/html" href="http://samediff.kr/wiki/index.php?title=%EB%82%B4%EA%B0%80_%EC%88%98%EC%A0%95%ED%95%9C_%EA%B2%83%EB%93%A4&amp;diff=16189"/>
		<updated>2020-02-01T12:37:26Z</updated>

		<summary type="html">&lt;p&gt;Admin: /* 수정한 것들 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== 수정한 것들 ==&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Extension:HighlightJS Extension:HighlightJS ]&lt;br /&gt;
** {{c|shl}}이라는 기괴한 태그를 또 추가하게 됨. 구문강조는 게쉬고 나발이고 그냥 js가 짱이다. 요즘엔 다 js가 짱이다.&lt;br /&gt;
&amp;lt;pre&amp;gt;wfLoadExtension( 'HighlightJS' ); &lt;br /&gt;
$wgHighlightJsMagic = 'shl';&lt;br /&gt;
$wgHighlightJsStyle = 'vs';&amp;lt;/pre&amp;gt;&lt;br /&gt;
* (아래 poem과 거의 비슷하게) WikiEditor에 특수문자 섹션 하나 추가 &lt;br /&gt;
** extensions/WikiEditor/modules/jquery.wikiEditor.toolbar.config.js 에 &amp;lt;c&amp;gt;special-characters-group-custom&amp;lt;/c&amp;gt;부분 추가. &lt;br /&gt;
** &amp;lt;c&amp;gt;languages/i18n/ko.json&amp;lt;/c&amp;gt;에도 &amp;lt;c&amp;gt;special-characters-group-custom&amp;lt;/c&amp;gt;부분 추가&lt;br /&gt;
** &amp;lt;del&amp;gt;includes/resourceloader/ResourceLoaderSpecialCharacterDataModule.php(구버전)&amp;lt;/del&amp;gt; resources/Resources.php 요기에도 추가&lt;br /&gt;
** resources/src/mediawiki.language/specialcharacters.json ★요게 가장 핵심. 여기에 적당한 기호들 추가. &amp;lt;c&amp;gt;&amp;quot;custom&amp;quot;&amp;lt;/c&amp;gt;부분. 특수문자는 [http://kor.pe.kr/util/4/charmap.htm 여기] 참고.&lt;br /&gt;
* (언제 설치한건지, 기본으로 있는건지 모르겠는데 어쨌건,) &amp;lt;c&amp;gt;extensions/WikiEditor&amp;lt;/c&amp;gt;에서 자동으로 &amp;lt;nowiki&amp;gt;&amp;lt;poem&amp;gt;&amp;lt;/nowiki&amp;gt;을 삽입하도록 버튼 하나 추가.  &lt;br /&gt;
** &amp;lt;c&amp;gt;modules/jquery.wikiEditor.toolbar.config.js&amp;lt;/c&amp;gt;에서 toolbar/main/groups/format/tools변수를 찾는다. bold와 italic 둘이 있는데 poem을 적당히 하나 추가한다.&lt;br /&gt;
** i18n/ko.json에 &amp;lt;c&amp;gt;&amp;quot;wikieditor-toolbar-tool-poem-example&amp;quot;: &amp;quot;\n&amp;quot;,&amp;lt;/c&amp;gt;를 적당한 곳에  넣고 extension.json에도 해당 변수 추가.&lt;br /&gt;
** underline하는것도 추가하려고 했는데 어찌된일인지 아이콘이 안나온다. &amp;lt;u&amp;gt;동작은 하는데&amp;lt;/u&amp;gt;.&lt;br /&gt;
* pdf업로드 가능하도록 [https://www.mediawiki.org/wiki/Manual:Configuring_file_uploads#Configuring_file_types configuration]수정 &lt;br /&gt;
* [https://www.mediawiki.org/wiki/Extension:PDFEmbed PDFEmbed extension]&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Extension:YouTube YouTube extension]&lt;br /&gt;
* 최대 업로드 크기 2M에서 10M으로 수정. /etc/php/7.0/apache2/php.ini 수정&lt;br /&gt;
*:&amp;lt;c&amp;gt;upload_max_filesize = 10M&amp;lt;/c&amp;gt;&lt;br /&gt;
*:&amp;lt;c&amp;gt;post_max_size = 10M&amp;lt;/c&amp;gt;&lt;br /&gt;
* google analytics [https://www.mediawiki.org/wiki/Extension:Google_Analytics_Integration] 2017.07.26&lt;br /&gt;
* https://www.mediawiki.org/wiki/Extension:AvbDisqus 설치함.&lt;br /&gt;
* 기본 폰트를 serif로 수정. ( skins/Vector/variables.less에서 sans-serif로 되어 있던 부분 두군데를 serif로 수정)&lt;br /&gt;
* &amp;lt;del&amp;gt;[https://www.mediawiki.org/wiki/Extension:MobileFrontend MobileFrontend] 설치 &amp;lt;/del&amp;gt;: Tweeki 스킨 설치하면 알아서 됨.&lt;br /&gt;
* &amp;lt;del&amp;gt;[https://www.mediawiki.org/wiki/Extension:MathJax MathJax] 설치&amp;lt;/del&amp;gt;&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Extension:SimpleMathJax SimpleMathJax]설치&lt;br /&gt;
* &amp;lt;del&amp;gt;[https://www.mediawiki.org/wiki/Extension:BacktickCode Backtick code] 설치 &amp;lt;/del&amp;gt; : 안되고 있음... 왜 안되는지 모름. 여튼 동작 안하는 중.&lt;br /&gt;
* BacktickCode가 동작하지 않아서 [https://www.mediawiki.org/wiki/Manual:Tag_extensions custom tag] &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;c&amp;gt;&amp;lt;/c&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; 만듦&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;extensions 폴더 안에 Courier.php파일 만들었음&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
&lt;br /&gt;
$wgHooks['ParserFirstCallInit'][] = 'CourierExtension::onParserSetup';&lt;br /&gt;
&lt;br /&gt;
class CourierExtension {&lt;br /&gt;
    // Register any render callbacks with the parser&lt;br /&gt;
    public static function onParserSetup( Parser $parser ) {&lt;br /&gt;
        // When the parser sees the &amp;lt;sample&amp;gt; tag, it executes renderTagSample (see below)&lt;br /&gt;
        $parser-&amp;gt;setHook( 'c', 'CourierExtension::renderTagSample' );&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    // Render &amp;lt;sample&amp;gt;&lt;br /&gt;
    public static function renderTagSample( $input, array $args, Parser $parser, PPFrame $frame ) {&lt;br /&gt;
        // Nothing exciting here, just escape the user-provided input and throw it back out again (as example) &lt;br /&gt;
        return &amp;quot;&amp;lt;span style='font-family:courier'&amp;gt;&amp;quot;.htmlspecialchars( $input ).&amp;quot;&amp;lt;/span&amp;gt;&amp;quot;;&lt;br /&gt;
    }                                &lt;br /&gt;
}&lt;br /&gt;
                                     &lt;br /&gt;
?&amp;gt;&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;LocalSettings.php에 아래 추가&lt;br /&gt;
&amp;lt;pre&amp;gt; require_once( &amp;quot;$IP/extensions/Courier/Courier.php&amp;quot; );&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Extension:TreeAndMenu Tree And Menu] 설치&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Extension:DeleteBatch DeleteBatch] 설치&lt;br /&gt;
* &amp;lt;del&amp;gt;includes/EditPage.php의 978line &amp;lt;pre&amp;gt;$this-&amp;gt;minoredit = true;&amp;lt;/pre&amp;gt;&amp;lt;/del&amp;gt; 이거 Admin&amp;gt;환경설정&amp;gt;편집에 '모든 편집에 기본적으로 사소한 편집을 표시'로 있음. &lt;br /&gt;
* tweeki skin[https://www.mediawiki.org/wiki/Skin:Tweeki] 설치&lt;br /&gt;
** 기본폰트 수정. bootstrap/css/bootstrap.min.css의 5번째 줄 15375 char에 'Georgia,serif'추가. (body{}에 추가}&lt;br /&gt;
** (위 수정한 것 바로 옆에) 글씨 크기 14pt에서 16pt로, line-height 1.42857143에서 17로 변경.&amp;lt;del&amp;gt; line-height가 너무 아스트랄한데?&amp;lt;/del&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;wfLoadExtension( 'Poem' );&amp;lt;/code&amp;gt;넣음. 미디어위키 기본이라 따로 뭔가 다운받을 필요는 없음.&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Extension:SyntaxHighlighter SyntaxHighlighter] &lt;br /&gt;
** 맨 뒤에 -er주의 그냥 SyntaxHighlight도 있음. &lt;br /&gt;
** 설치를 하긴 했으나, 별로 보기좋다는 생각이 안들어서 잘 안씀.&lt;br /&gt;
&lt;br /&gt;
== 아래는 구 버전 (위키 업데이트 하면서 모두 삭제됨. 무시할것) ==&lt;br /&gt;
*[http://www.mediawiki.org/wiki/Manual:Configuring_file_uploads file upload enable] &lt;br /&gt;
*[http://www.mediawiki.org/wiki/Syntaxhighlight syntax highlight extension] &lt;br /&gt;
*모바일 브라우저에서 너무 작게 보이는 문제&amp;lt;source lang=&amp;quot;html4strict&amp;quot;&amp;gt;&amp;lt;meta name=&amp;quot;viewport&amp;quot; content=&amp;quot;width=device-width&amp;quot; /&amp;gt;&amp;lt;/source&amp;gt;이걸로 해결 &lt;br /&gt;
**(QnA) [http://www.smashingmagazine.com/2011/01/11/keeping-web-users-safe-by-sanitizing-input-data/ 이 사이트]처럼 초기에는 작다가 확대하면 알아서 텍스트 폭이 변하는건 어떻게 하는걸까. 소스보기에서 &amp;lt;source lang=&amp;quot;html4strict&amp;quot;&amp;gt;&amp;lt;meta name=&amp;quot;viewport&amp;quot; content=&amp;quot;width=device-width; initial-scale=1.0&amp;quot;&amp;gt;&amp;lt;/source&amp;gt;이렇게 있었지만 이걸 내 위키에 넣어도 원하는대로 동작하지는 않았다.&amp;lt;sup&amp;gt;[https://developer.mozilla.org/en/Mobile/Viewport_meta_tag 참고자료]&amp;lt;/sup&amp;gt; &lt;br /&gt;
*fck editor에서 붙여넣기. 텍스트 뿐 아니라 서식도 가능하게 &lt;br /&gt;
**[http://www.mediawiki.org/wiki/Extension_talk:FCKeditor_(Official)#copy_and_paste_issues.3B_.22Paste_From_Word.22_icon_missing 여기]참고. &lt;br /&gt;
** &amp;lt;div&amp;gt;w/extensions/FCKeditor/fckeditor_config.js에서&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
// Setup the editor toolbar.&lt;br /&gt;
FCKConfig.ToolbarSets['Wiki'] = [&lt;br /&gt;
        ['Source'],&lt;br /&gt;
        ['Cut','Copy','Paste','PasteText','PasteWord','-','Print'],&lt;br /&gt;
        ['Undo','Redo','-','Find','Replace','-','SelectAll','RemoveFormat'],&lt;br /&gt;
        ['SpecialChar','Table','Image','Rule'],&lt;br /&gt;
&amp;lt;/source&amp;gt; 이렇게 함. 원래 &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;'PasteText','PasteWord'&amp;lt;/source&amp;gt;여기에 주석이 있었음. &amp;lt;/div&amp;gt;&lt;br /&gt;
**근데 이거 잘 안되고 있으니 다시 한번 잘 들여다볼것.&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
		
	</entry>
	<entry>
		<id>http://samediff.kr/wiki/index.php?title=%EB%82%B4%EA%B0%80_%EC%88%98%EC%A0%95%ED%95%9C_%EA%B2%83%EB%93%A4&amp;diff=16188</id>
		<title>내가 수정한 것들</title>
		<link rel="alternate" type="text/html" href="http://samediff.kr/wiki/index.php?title=%EB%82%B4%EA%B0%80_%EC%88%98%EC%A0%95%ED%95%9C_%EA%B2%83%EB%93%A4&amp;diff=16188"/>
		<updated>2020-02-01T12:37:12Z</updated>

		<summary type="html">&lt;p&gt;Admin: /* 수정한 것들 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== 수정한 것들 ==&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Extension:HighlightJS Extension:HighlightJS ]&lt;br /&gt;
** {{c|shl}}이라는 기괴한 태그를 또 추가하게 됨. 구문강조는 게쉬고 나발이고 그냥 js가 짱이다. 요즘엔 다 js가 짱이다.&lt;br /&gt;
&amp;lt;pre&amp;gt;wfLoadExtension( 'HighlightJS' ); &lt;br /&gt;
$wgHighlightJsMagic = 'shl';&lt;br /&gt;
$wgHighlightJsStyle = 'vs';&amp;lt;/pre&amp;gt;&lt;br /&gt;
* (아래 poem과 거의 비슷하게) WikiEditor에 특수문자 섹션 하나 추가 &lt;br /&gt;
** extensions/WikiEditor/modules/jquery.wikiEditor.toolbar.config.js 에 &amp;lt;c&amp;gt;special-characters-group-custom&amp;lt;/c&amp;gt;부분 추가. &lt;br /&gt;
** &amp;lt;c&amp;gt;languages/i18n/ko.json&amp;lt;/c&amp;gt;에도 &amp;lt;c&amp;gt;special-characters-group-custom&amp;lt;/c&amp;gt;부분 추가&lt;br /&gt;
** &amp;lt;del&amp;gt;includes/resourceloader/ResourceLoaderSpecialCharacterDataModule.php(구버전)&amp;lt;/del&amp;gt; resources/Resources.php 요기에도 추가&lt;br /&gt;
** resources/src/mediawiki.language/specialcharacters.json ★요게 가장 핵심. 여기에 적당한 기호들 추가. &amp;lt;c&amp;gt;&amp;quot;custom&amp;quot;&amp;lt;/c&amp;gt;부분. 특수문자는 [http://kor.pe.kr/util/4/charmap.htm 여기] 참고.&lt;br /&gt;
* (언제 설치한건지, 기본으로 있는건지 모르겠는데 어쨌건,) &amp;lt;c&amp;gt;extensions/WikiEditor&amp;lt;/c&amp;gt;에서 자동으로 &amp;lt;nowiki&amp;gt;&amp;lt;poem&amp;gt;&amp;lt;/nowiki&amp;gt;을 삽입하도록 버튼 하나 추가.  이것도 제거 &lt;br /&gt;
** &amp;lt;c&amp;gt;modules/jquery.wikiEditor.toolbar.config.js&amp;lt;/c&amp;gt;에서 toolbar/main/groups/format/tools변수를 찾는다. bold와 italic 둘이 있는데 poem을 적당히 하나 추가한다.&lt;br /&gt;
** i18n/ko.json에 &amp;lt;c&amp;gt;&amp;quot;wikieditor-toolbar-tool-poem-example&amp;quot;: &amp;quot;\n&amp;quot;,&amp;lt;/c&amp;gt;를 적당한 곳에  넣고 extension.json에도 해당 변수 추가.&lt;br /&gt;
** underline하는것도 추가하려고 했는데 어찌된일인지 아이콘이 안나온다. &amp;lt;u&amp;gt;동작은 하는데&amp;lt;/u&amp;gt;.&lt;br /&gt;
* pdf업로드 가능하도록 [https://www.mediawiki.org/wiki/Manual:Configuring_file_uploads#Configuring_file_types configuration]수정 &lt;br /&gt;
* [https://www.mediawiki.org/wiki/Extension:PDFEmbed PDFEmbed extension]&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Extension:YouTube YouTube extension]&lt;br /&gt;
* 최대 업로드 크기 2M에서 10M으로 수정. /etc/php/7.0/apache2/php.ini 수정&lt;br /&gt;
*:&amp;lt;c&amp;gt;upload_max_filesize = 10M&amp;lt;/c&amp;gt;&lt;br /&gt;
*:&amp;lt;c&amp;gt;post_max_size = 10M&amp;lt;/c&amp;gt;&lt;br /&gt;
* google analytics [https://www.mediawiki.org/wiki/Extension:Google_Analytics_Integration] 2017.07.26&lt;br /&gt;
* https://www.mediawiki.org/wiki/Extension:AvbDisqus 설치함.&lt;br /&gt;
* 기본 폰트를 serif로 수정. ( skins/Vector/variables.less에서 sans-serif로 되어 있던 부분 두군데를 serif로 수정)&lt;br /&gt;
* &amp;lt;del&amp;gt;[https://www.mediawiki.org/wiki/Extension:MobileFrontend MobileFrontend] 설치 &amp;lt;/del&amp;gt;: Tweeki 스킨 설치하면 알아서 됨.&lt;br /&gt;
* &amp;lt;del&amp;gt;[https://www.mediawiki.org/wiki/Extension:MathJax MathJax] 설치&amp;lt;/del&amp;gt;&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Extension:SimpleMathJax SimpleMathJax]설치&lt;br /&gt;
* &amp;lt;del&amp;gt;[https://www.mediawiki.org/wiki/Extension:BacktickCode Backtick code] 설치 &amp;lt;/del&amp;gt; : 안되고 있음... 왜 안되는지 모름. 여튼 동작 안하는 중.&lt;br /&gt;
* BacktickCode가 동작하지 않아서 [https://www.mediawiki.org/wiki/Manual:Tag_extensions custom tag] &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;c&amp;gt;&amp;lt;/c&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; 만듦&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;extensions 폴더 안에 Courier.php파일 만들었음&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
&lt;br /&gt;
$wgHooks['ParserFirstCallInit'][] = 'CourierExtension::onParserSetup';&lt;br /&gt;
&lt;br /&gt;
class CourierExtension {&lt;br /&gt;
    // Register any render callbacks with the parser&lt;br /&gt;
    public static function onParserSetup( Parser $parser ) {&lt;br /&gt;
        // When the parser sees the &amp;lt;sample&amp;gt; tag, it executes renderTagSample (see below)&lt;br /&gt;
        $parser-&amp;gt;setHook( 'c', 'CourierExtension::renderTagSample' );&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    // Render &amp;lt;sample&amp;gt;&lt;br /&gt;
    public static function renderTagSample( $input, array $args, Parser $parser, PPFrame $frame ) {&lt;br /&gt;
        // Nothing exciting here, just escape the user-provided input and throw it back out again (as example) &lt;br /&gt;
        return &amp;quot;&amp;lt;span style='font-family:courier'&amp;gt;&amp;quot;.htmlspecialchars( $input ).&amp;quot;&amp;lt;/span&amp;gt;&amp;quot;;&lt;br /&gt;
    }                                &lt;br /&gt;
}&lt;br /&gt;
                                     &lt;br /&gt;
?&amp;gt;&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;LocalSettings.php에 아래 추가&lt;br /&gt;
&amp;lt;pre&amp;gt; require_once( &amp;quot;$IP/extensions/Courier/Courier.php&amp;quot; );&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Extension:TreeAndMenu Tree And Menu] 설치&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Extension:DeleteBatch DeleteBatch] 설치&lt;br /&gt;
* &amp;lt;del&amp;gt;includes/EditPage.php의 978line &amp;lt;pre&amp;gt;$this-&amp;gt;minoredit = true;&amp;lt;/pre&amp;gt;&amp;lt;/del&amp;gt; 이거 Admin&amp;gt;환경설정&amp;gt;편집에 '모든 편집에 기본적으로 사소한 편집을 표시'로 있음. &lt;br /&gt;
* tweeki skin[https://www.mediawiki.org/wiki/Skin:Tweeki] 설치&lt;br /&gt;
** 기본폰트 수정. bootstrap/css/bootstrap.min.css의 5번째 줄 15375 char에 'Georgia,serif'추가. (body{}에 추가}&lt;br /&gt;
** (위 수정한 것 바로 옆에) 글씨 크기 14pt에서 16pt로, line-height 1.42857143에서 17로 변경.&amp;lt;del&amp;gt; line-height가 너무 아스트랄한데?&amp;lt;/del&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;wfLoadExtension( 'Poem' );&amp;lt;/code&amp;gt;넣음. 미디어위키 기본이라 따로 뭔가 다운받을 필요는 없음.&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Extension:SyntaxHighlighter SyntaxHighlighter] &lt;br /&gt;
** 맨 뒤에 -er주의 그냥 SyntaxHighlight도 있음. &lt;br /&gt;
** 설치를 하긴 했으나, 별로 보기좋다는 생각이 안들어서 잘 안씀.&lt;br /&gt;
&lt;br /&gt;
== 아래는 구 버전 (위키 업데이트 하면서 모두 삭제됨. 무시할것) ==&lt;br /&gt;
*[http://www.mediawiki.org/wiki/Manual:Configuring_file_uploads file upload enable] &lt;br /&gt;
*[http://www.mediawiki.org/wiki/Syntaxhighlight syntax highlight extension] &lt;br /&gt;
*모바일 브라우저에서 너무 작게 보이는 문제&amp;lt;source lang=&amp;quot;html4strict&amp;quot;&amp;gt;&amp;lt;meta name=&amp;quot;viewport&amp;quot; content=&amp;quot;width=device-width&amp;quot; /&amp;gt;&amp;lt;/source&amp;gt;이걸로 해결 &lt;br /&gt;
**(QnA) [http://www.smashingmagazine.com/2011/01/11/keeping-web-users-safe-by-sanitizing-input-data/ 이 사이트]처럼 초기에는 작다가 확대하면 알아서 텍스트 폭이 변하는건 어떻게 하는걸까. 소스보기에서 &amp;lt;source lang=&amp;quot;html4strict&amp;quot;&amp;gt;&amp;lt;meta name=&amp;quot;viewport&amp;quot; content=&amp;quot;width=device-width; initial-scale=1.0&amp;quot;&amp;gt;&amp;lt;/source&amp;gt;이렇게 있었지만 이걸 내 위키에 넣어도 원하는대로 동작하지는 않았다.&amp;lt;sup&amp;gt;[https://developer.mozilla.org/en/Mobile/Viewport_meta_tag 참고자료]&amp;lt;/sup&amp;gt; &lt;br /&gt;
*fck editor에서 붙여넣기. 텍스트 뿐 아니라 서식도 가능하게 &lt;br /&gt;
**[http://www.mediawiki.org/wiki/Extension_talk:FCKeditor_(Official)#copy_and_paste_issues.3B_.22Paste_From_Word.22_icon_missing 여기]참고. &lt;br /&gt;
** &amp;lt;div&amp;gt;w/extensions/FCKeditor/fckeditor_config.js에서&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
// Setup the editor toolbar.&lt;br /&gt;
FCKConfig.ToolbarSets['Wiki'] = [&lt;br /&gt;
        ['Source'],&lt;br /&gt;
        ['Cut','Copy','Paste','PasteText','PasteWord','-','Print'],&lt;br /&gt;
        ['Undo','Redo','-','Find','Replace','-','SelectAll','RemoveFormat'],&lt;br /&gt;
        ['SpecialChar','Table','Image','Rule'],&lt;br /&gt;
&amp;lt;/source&amp;gt; 이렇게 함. 원래 &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;'PasteText','PasteWord'&amp;lt;/source&amp;gt;여기에 주석이 있었음. &amp;lt;/div&amp;gt;&lt;br /&gt;
**근데 이거 잘 안되고 있으니 다시 한번 잘 들여다볼것.&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
		
	</entry>
	<entry>
		<id>http://samediff.kr/wiki/index.php?title=%EB%82%B4%EA%B0%80_%EC%88%98%EC%A0%95%ED%95%9C_%EA%B2%83%EB%93%A4&amp;diff=16187</id>
		<title>내가 수정한 것들</title>
		<link rel="alternate" type="text/html" href="http://samediff.kr/wiki/index.php?title=%EB%82%B4%EA%B0%80_%EC%88%98%EC%A0%95%ED%95%9C_%EA%B2%83%EB%93%A4&amp;diff=16187"/>
		<updated>2020-02-01T12:34:13Z</updated>

		<summary type="html">&lt;p&gt;Admin: /* 수정한 것들 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== 수정한 것들 ==&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Extension:HighlightJS Extension:HighlightJS ]&lt;br /&gt;
** {{c|shl}}이라는 기괴한 태그를 또 추가하게 됨. 구문강조는 게쉬고 나발이고 그냥 js가 짱이다. 요즘엔 다 js가 짱이다.&lt;br /&gt;
&amp;lt;pre&amp;gt;wfLoadExtension( 'HighlightJS' ); &lt;br /&gt;
$wgHighlightJsMagic = 'shl';&lt;br /&gt;
$wgHighlightJsStyle = 'vs';&amp;lt;/pre&amp;gt;&lt;br /&gt;
* (아래 poem과 거의 비슷하게) WikiEditor에 특수문자 섹션 하나 추가 &lt;br /&gt;
** extensions/WikiEditor/modules/jquery.wikiEditor.toolbar.config.js 에 &amp;lt;c&amp;gt;special-characters-group-custom&amp;lt;/c&amp;gt;부분 추가. &lt;br /&gt;
** &amp;lt;c&amp;gt;languages/i18n/ko.json&amp;lt;/c&amp;gt;에도 &amp;lt;c&amp;gt;special-characters-group-custom&amp;lt;/c&amp;gt;부분 추가&lt;br /&gt;
** &amp;lt;del&amp;gt;includes/resourceloader/ResourceLoaderSpecialCharacterDataModule.php(구버전)&amp;lt;/del&amp;gt; resources/Resources.php 요기에도 추가&lt;br /&gt;
** resources/src/mediawiki.language/specialcharacters.json ★요게 가장 핵심. 여기에 적당한 기호들 추가. &amp;lt;c&amp;gt;&amp;quot;custom&amp;quot;&amp;lt;/c&amp;gt;부분. 특수문자는 [http://kor.pe.kr/util/4/charmap.htm 여기] 참고.&lt;br /&gt;
* &amp;lt;del&amp;gt;(언제 설치한건지, 기본으로 있는건지 모르겠는데 어쨌건,) &amp;lt;c&amp;gt;extensions/WikiEditor&amp;lt;/c&amp;gt;에서 자동으로 &amp;lt;nowiki&amp;gt;&amp;lt;poem&amp;gt;&amp;lt;/nowiki&amp;gt;을 삽입하도록 버튼 하나 추가. &amp;lt;/del&amp;gt; 이것도 제거 &lt;br /&gt;
** &amp;lt;c&amp;gt;modules/jquery.wikiEditor.toolbar.config.js&amp;lt;/c&amp;gt;에서 toolbar/main/groups/format/tools변수를 찾는다. bold와 italic 둘이 있는데 poem을 적당히 하나 추가한다.&lt;br /&gt;
** i18n/ko.json에 &amp;lt;c&amp;gt;&amp;quot;wikieditor-toolbar-tool-poem-example&amp;quot;: &amp;quot;\n&amp;quot;,&amp;lt;/c&amp;gt;를 적당한 곳에  넣고 extension.json에도 해당 변수 추가.&lt;br /&gt;
** underline하는것도 추가하려고 했는데 어찌된일인지 아이콘이 안나온다. &amp;lt;u&amp;gt;동작은 하는데&amp;lt;/u&amp;gt;.&lt;br /&gt;
* pdf업로드 가능하도록 [https://www.mediawiki.org/wiki/Manual:Configuring_file_uploads#Configuring_file_types configuration]수정 &lt;br /&gt;
* [https://www.mediawiki.org/wiki/Extension:PDFEmbed PDFEmbed extension]&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Extension:YouTube YouTube extension]&lt;br /&gt;
* 최대 업로드 크기 2M에서 10M으로 수정. /etc/php/7.0/apache2/php.ini 수정&lt;br /&gt;
*:&amp;lt;c&amp;gt;upload_max_filesize = 10M&amp;lt;/c&amp;gt;&lt;br /&gt;
*:&amp;lt;c&amp;gt;post_max_size = 10M&amp;lt;/c&amp;gt;&lt;br /&gt;
* google analytics [https://www.mediawiki.org/wiki/Extension:Google_Analytics_Integration] 2017.07.26&lt;br /&gt;
* https://www.mediawiki.org/wiki/Extension:AvbDisqus 설치함.&lt;br /&gt;
* 기본 폰트를 serif로 수정. ( skins/Vector/variables.less에서 sans-serif로 되어 있던 부분 두군데를 serif로 수정)&lt;br /&gt;
* &amp;lt;del&amp;gt;[https://www.mediawiki.org/wiki/Extension:MobileFrontend MobileFrontend] 설치 &amp;lt;/del&amp;gt;: Tweeki 스킨 설치하면 알아서 됨.&lt;br /&gt;
* &amp;lt;del&amp;gt;[https://www.mediawiki.org/wiki/Extension:MathJax MathJax] 설치&amp;lt;/del&amp;gt;&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Extension:SimpleMathJax SimpleMathJax]설치&lt;br /&gt;
* &amp;lt;del&amp;gt;[https://www.mediawiki.org/wiki/Extension:BacktickCode Backtick code] 설치 &amp;lt;/del&amp;gt; : 안되고 있음... 왜 안되는지 모름. 여튼 동작 안하는 중.&lt;br /&gt;
* BacktickCode가 동작하지 않아서 [https://www.mediawiki.org/wiki/Manual:Tag_extensions custom tag] &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;c&amp;gt;&amp;lt;/c&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; 만듦&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;extensions 폴더 안에 Courier.php파일 만들었음&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
&lt;br /&gt;
$wgHooks['ParserFirstCallInit'][] = 'CourierExtension::onParserSetup';&lt;br /&gt;
&lt;br /&gt;
class CourierExtension {&lt;br /&gt;
    // Register any render callbacks with the parser&lt;br /&gt;
    public static function onParserSetup( Parser $parser ) {&lt;br /&gt;
        // When the parser sees the &amp;lt;sample&amp;gt; tag, it executes renderTagSample (see below)&lt;br /&gt;
        $parser-&amp;gt;setHook( 'c', 'CourierExtension::renderTagSample' );&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    // Render &amp;lt;sample&amp;gt;&lt;br /&gt;
    public static function renderTagSample( $input, array $args, Parser $parser, PPFrame $frame ) {&lt;br /&gt;
        // Nothing exciting here, just escape the user-provided input and throw it back out again (as example) &lt;br /&gt;
        return &amp;quot;&amp;lt;span style='font-family:courier'&amp;gt;&amp;quot;.htmlspecialchars( $input ).&amp;quot;&amp;lt;/span&amp;gt;&amp;quot;;&lt;br /&gt;
    }                                &lt;br /&gt;
}&lt;br /&gt;
                                     &lt;br /&gt;
?&amp;gt;&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;LocalSettings.php에 아래 추가&lt;br /&gt;
&amp;lt;pre&amp;gt; require_once( &amp;quot;$IP/extensions/Courier/Courier.php&amp;quot; );&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Extension:TreeAndMenu Tree And Menu] 설치&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Extension:DeleteBatch DeleteBatch] 설치&lt;br /&gt;
* &amp;lt;del&amp;gt;includes/EditPage.php의 978line &amp;lt;pre&amp;gt;$this-&amp;gt;minoredit = true;&amp;lt;/pre&amp;gt;&amp;lt;/del&amp;gt; 이거 Admin&amp;gt;환경설정&amp;gt;편집에 '모든 편집에 기본적으로 사소한 편집을 표시'로 있음. &lt;br /&gt;
* tweeki skin[https://www.mediawiki.org/wiki/Skin:Tweeki] 설치&lt;br /&gt;
** 기본폰트 수정. bootstrap/css/bootstrap.min.css의 5번째 줄 15375 char에 'Georgia,serif'추가. (body{}에 추가}&lt;br /&gt;
** (위 수정한 것 바로 옆에) 글씨 크기 14pt에서 16pt로, line-height 1.42857143에서 17로 변경.&amp;lt;del&amp;gt; line-height가 너무 아스트랄한데?&amp;lt;/del&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;wfLoadExtension( 'Poem' );&amp;lt;/code&amp;gt;넣음. 미디어위키 기본이라 따로 뭔가 다운받을 필요는 없음.&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Extension:SyntaxHighlighter SyntaxHighlighter] &lt;br /&gt;
** 맨 뒤에 -er주의 그냥 SyntaxHighlight도 있음. &lt;br /&gt;
** 설치를 하긴 했으나, 별로 보기좋다는 생각이 안들어서 잘 안씀.&lt;br /&gt;
&lt;br /&gt;
== 아래는 구 버전 (위키 업데이트 하면서 모두 삭제됨. 무시할것) ==&lt;br /&gt;
*[http://www.mediawiki.org/wiki/Manual:Configuring_file_uploads file upload enable] &lt;br /&gt;
*[http://www.mediawiki.org/wiki/Syntaxhighlight syntax highlight extension] &lt;br /&gt;
*모바일 브라우저에서 너무 작게 보이는 문제&amp;lt;source lang=&amp;quot;html4strict&amp;quot;&amp;gt;&amp;lt;meta name=&amp;quot;viewport&amp;quot; content=&amp;quot;width=device-width&amp;quot; /&amp;gt;&amp;lt;/source&amp;gt;이걸로 해결 &lt;br /&gt;
**(QnA) [http://www.smashingmagazine.com/2011/01/11/keeping-web-users-safe-by-sanitizing-input-data/ 이 사이트]처럼 초기에는 작다가 확대하면 알아서 텍스트 폭이 변하는건 어떻게 하는걸까. 소스보기에서 &amp;lt;source lang=&amp;quot;html4strict&amp;quot;&amp;gt;&amp;lt;meta name=&amp;quot;viewport&amp;quot; content=&amp;quot;width=device-width; initial-scale=1.0&amp;quot;&amp;gt;&amp;lt;/source&amp;gt;이렇게 있었지만 이걸 내 위키에 넣어도 원하는대로 동작하지는 않았다.&amp;lt;sup&amp;gt;[https://developer.mozilla.org/en/Mobile/Viewport_meta_tag 참고자료]&amp;lt;/sup&amp;gt; &lt;br /&gt;
*fck editor에서 붙여넣기. 텍스트 뿐 아니라 서식도 가능하게 &lt;br /&gt;
**[http://www.mediawiki.org/wiki/Extension_talk:FCKeditor_(Official)#copy_and_paste_issues.3B_.22Paste_From_Word.22_icon_missing 여기]참고. &lt;br /&gt;
** &amp;lt;div&amp;gt;w/extensions/FCKeditor/fckeditor_config.js에서&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
// Setup the editor toolbar.&lt;br /&gt;
FCKConfig.ToolbarSets['Wiki'] = [&lt;br /&gt;
        ['Source'],&lt;br /&gt;
        ['Cut','Copy','Paste','PasteText','PasteWord','-','Print'],&lt;br /&gt;
        ['Undo','Redo','-','Find','Replace','-','SelectAll','RemoveFormat'],&lt;br /&gt;
        ['SpecialChar','Table','Image','Rule'],&lt;br /&gt;
&amp;lt;/source&amp;gt; 이렇게 함. 원래 &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;'PasteText','PasteWord'&amp;lt;/source&amp;gt;여기에 주석이 있었음. &amp;lt;/div&amp;gt;&lt;br /&gt;
**근데 이거 잘 안되고 있으니 다시 한번 잘 들여다볼것.&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
		
	</entry>
	<entry>
		<id>http://samediff.kr/wiki/index.php?title=%EB%82%B4%EA%B0%80_%EC%88%98%EC%A0%95%ED%95%9C_%EA%B2%83%EB%93%A4&amp;diff=16186</id>
		<title>내가 수정한 것들</title>
		<link rel="alternate" type="text/html" href="http://samediff.kr/wiki/index.php?title=%EB%82%B4%EA%B0%80_%EC%88%98%EC%A0%95%ED%95%9C_%EA%B2%83%EB%93%A4&amp;diff=16186"/>
		<updated>2020-02-01T12:33:53Z</updated>

		<summary type="html">&lt;p&gt;Admin: /* 수정한 것들 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== 수정한 것들 ==&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Extension:HighlightJS Extension:HighlightJS ]&lt;br /&gt;
** {{c|shl}}이라는 기괴한 태그를 또 추가하게 됨. 구문강조는 게쉬고 나발이고 그냥 js가 짱이다. 요즘엔 다 js가 짱이다.&lt;br /&gt;
&amp;lt;pre&amp;gt;wfLoadExtension( 'HighlightJS' ); &lt;br /&gt;
$wgHighlightJsMagic = 'shl';&lt;br /&gt;
$wgHighlightJsStyle = 'vs';&amp;lt;/pre&amp;gt;&lt;br /&gt;
* (아래 poem과 거의 비슷하게) WikiEditor에 특수문자 섹션 하나 추가 &lt;br /&gt;
** extensions/WikiEditor/modules/jquery.wikiEditor.toolbar.config.js 에 &amp;lt;c&amp;gt;special-characters-group-custom&amp;lt;/c&amp;gt;부분 추가. &lt;br /&gt;
** &amp;lt;c&amp;gt;languages/i18n/ko.json&amp;lt;/c&amp;gt;에도 &amp;lt;c&amp;gt;special-characters-group-custom&amp;lt;/c&amp;gt;부분 추가&lt;br /&gt;
** &amp;lt;del&amp;gt;includes/resourceloader/ResourceLoaderSpecialCharacterDataModule.php&amp;lt;/del&amp;gt;resources/Resources.php 요기에도 추가&lt;br /&gt;
** resources/src/mediawiki.language/specialcharacters.json ★요게 가장 핵심. 여기에 적당한 기호들 추가. &amp;lt;c&amp;gt;&amp;quot;custom&amp;quot;&amp;lt;/c&amp;gt;부분. 특수문자는 [http://kor.pe.kr/util/4/charmap.htm 여기] 참고.&lt;br /&gt;
* &amp;lt;del&amp;gt;(언제 설치한건지, 기본으로 있는건지 모르겠는데 어쨌건,) &amp;lt;c&amp;gt;extensions/WikiEditor&amp;lt;/c&amp;gt;에서 자동으로 &amp;lt;nowiki&amp;gt;&amp;lt;poem&amp;gt;&amp;lt;/nowiki&amp;gt;을 삽입하도록 버튼 하나 추가. &amp;lt;/del&amp;gt; 이것도 제거 &lt;br /&gt;
** &amp;lt;c&amp;gt;modules/jquery.wikiEditor.toolbar.config.js&amp;lt;/c&amp;gt;에서 toolbar/main/groups/format/tools변수를 찾는다. bold와 italic 둘이 있는데 poem을 적당히 하나 추가한다.&lt;br /&gt;
** i18n/ko.json에 &amp;lt;c&amp;gt;&amp;quot;wikieditor-toolbar-tool-poem-example&amp;quot;: &amp;quot;\n&amp;quot;,&amp;lt;/c&amp;gt;를 적당한 곳에  넣고 extension.json에도 해당 변수 추가.&lt;br /&gt;
** underline하는것도 추가하려고 했는데 어찌된일인지 아이콘이 안나온다. &amp;lt;u&amp;gt;동작은 하는데&amp;lt;/u&amp;gt;.&lt;br /&gt;
* pdf업로드 가능하도록 [https://www.mediawiki.org/wiki/Manual:Configuring_file_uploads#Configuring_file_types configuration]수정 &lt;br /&gt;
* [https://www.mediawiki.org/wiki/Extension:PDFEmbed PDFEmbed extension]&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Extension:YouTube YouTube extension]&lt;br /&gt;
* 최대 업로드 크기 2M에서 10M으로 수정. /etc/php/7.0/apache2/php.ini 수정&lt;br /&gt;
*:&amp;lt;c&amp;gt;upload_max_filesize = 10M&amp;lt;/c&amp;gt;&lt;br /&gt;
*:&amp;lt;c&amp;gt;post_max_size = 10M&amp;lt;/c&amp;gt;&lt;br /&gt;
* google analytics [https://www.mediawiki.org/wiki/Extension:Google_Analytics_Integration] 2017.07.26&lt;br /&gt;
* https://www.mediawiki.org/wiki/Extension:AvbDisqus 설치함.&lt;br /&gt;
* 기본 폰트를 serif로 수정. ( skins/Vector/variables.less에서 sans-serif로 되어 있던 부분 두군데를 serif로 수정)&lt;br /&gt;
* &amp;lt;del&amp;gt;[https://www.mediawiki.org/wiki/Extension:MobileFrontend MobileFrontend] 설치 &amp;lt;/del&amp;gt;: Tweeki 스킨 설치하면 알아서 됨.&lt;br /&gt;
* &amp;lt;del&amp;gt;[https://www.mediawiki.org/wiki/Extension:MathJax MathJax] 설치&amp;lt;/del&amp;gt;&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Extension:SimpleMathJax SimpleMathJax]설치&lt;br /&gt;
* &amp;lt;del&amp;gt;[https://www.mediawiki.org/wiki/Extension:BacktickCode Backtick code] 설치 &amp;lt;/del&amp;gt; : 안되고 있음... 왜 안되는지 모름. 여튼 동작 안하는 중.&lt;br /&gt;
* BacktickCode가 동작하지 않아서 [https://www.mediawiki.org/wiki/Manual:Tag_extensions custom tag] &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;c&amp;gt;&amp;lt;/c&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; 만듦&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;extensions 폴더 안에 Courier.php파일 만들었음&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
&lt;br /&gt;
$wgHooks['ParserFirstCallInit'][] = 'CourierExtension::onParserSetup';&lt;br /&gt;
&lt;br /&gt;
class CourierExtension {&lt;br /&gt;
    // Register any render callbacks with the parser&lt;br /&gt;
    public static function onParserSetup( Parser $parser ) {&lt;br /&gt;
        // When the parser sees the &amp;lt;sample&amp;gt; tag, it executes renderTagSample (see below)&lt;br /&gt;
        $parser-&amp;gt;setHook( 'c', 'CourierExtension::renderTagSample' );&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    // Render &amp;lt;sample&amp;gt;&lt;br /&gt;
    public static function renderTagSample( $input, array $args, Parser $parser, PPFrame $frame ) {&lt;br /&gt;
        // Nothing exciting here, just escape the user-provided input and throw it back out again (as example) &lt;br /&gt;
        return &amp;quot;&amp;lt;span style='font-family:courier'&amp;gt;&amp;quot;.htmlspecialchars( $input ).&amp;quot;&amp;lt;/span&amp;gt;&amp;quot;;&lt;br /&gt;
    }                                &lt;br /&gt;
}&lt;br /&gt;
                                     &lt;br /&gt;
?&amp;gt;&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;LocalSettings.php에 아래 추가&lt;br /&gt;
&amp;lt;pre&amp;gt; require_once( &amp;quot;$IP/extensions/Courier/Courier.php&amp;quot; );&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Extension:TreeAndMenu Tree And Menu] 설치&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Extension:DeleteBatch DeleteBatch] 설치&lt;br /&gt;
* &amp;lt;del&amp;gt;includes/EditPage.php의 978line &amp;lt;pre&amp;gt;$this-&amp;gt;minoredit = true;&amp;lt;/pre&amp;gt;&amp;lt;/del&amp;gt; 이거 Admin&amp;gt;환경설정&amp;gt;편집에 '모든 편집에 기본적으로 사소한 편집을 표시'로 있음. &lt;br /&gt;
* tweeki skin[https://www.mediawiki.org/wiki/Skin:Tweeki] 설치&lt;br /&gt;
** 기본폰트 수정. bootstrap/css/bootstrap.min.css의 5번째 줄 15375 char에 'Georgia,serif'추가. (body{}에 추가}&lt;br /&gt;
** (위 수정한 것 바로 옆에) 글씨 크기 14pt에서 16pt로, line-height 1.42857143에서 17로 변경.&amp;lt;del&amp;gt; line-height가 너무 아스트랄한데?&amp;lt;/del&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;wfLoadExtension( 'Poem' );&amp;lt;/code&amp;gt;넣음. 미디어위키 기본이라 따로 뭔가 다운받을 필요는 없음.&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Extension:SyntaxHighlighter SyntaxHighlighter] &lt;br /&gt;
** 맨 뒤에 -er주의 그냥 SyntaxHighlight도 있음. &lt;br /&gt;
** 설치를 하긴 했으나, 별로 보기좋다는 생각이 안들어서 잘 안씀.&lt;br /&gt;
&lt;br /&gt;
== 아래는 구 버전 (위키 업데이트 하면서 모두 삭제됨. 무시할것) ==&lt;br /&gt;
*[http://www.mediawiki.org/wiki/Manual:Configuring_file_uploads file upload enable] &lt;br /&gt;
*[http://www.mediawiki.org/wiki/Syntaxhighlight syntax highlight extension] &lt;br /&gt;
*모바일 브라우저에서 너무 작게 보이는 문제&amp;lt;source lang=&amp;quot;html4strict&amp;quot;&amp;gt;&amp;lt;meta name=&amp;quot;viewport&amp;quot; content=&amp;quot;width=device-width&amp;quot; /&amp;gt;&amp;lt;/source&amp;gt;이걸로 해결 &lt;br /&gt;
**(QnA) [http://www.smashingmagazine.com/2011/01/11/keeping-web-users-safe-by-sanitizing-input-data/ 이 사이트]처럼 초기에는 작다가 확대하면 알아서 텍스트 폭이 변하는건 어떻게 하는걸까. 소스보기에서 &amp;lt;source lang=&amp;quot;html4strict&amp;quot;&amp;gt;&amp;lt;meta name=&amp;quot;viewport&amp;quot; content=&amp;quot;width=device-width; initial-scale=1.0&amp;quot;&amp;gt;&amp;lt;/source&amp;gt;이렇게 있었지만 이걸 내 위키에 넣어도 원하는대로 동작하지는 않았다.&amp;lt;sup&amp;gt;[https://developer.mozilla.org/en/Mobile/Viewport_meta_tag 참고자료]&amp;lt;/sup&amp;gt; &lt;br /&gt;
*fck editor에서 붙여넣기. 텍스트 뿐 아니라 서식도 가능하게 &lt;br /&gt;
**[http://www.mediawiki.org/wiki/Extension_talk:FCKeditor_(Official)#copy_and_paste_issues.3B_.22Paste_From_Word.22_icon_missing 여기]참고. &lt;br /&gt;
** &amp;lt;div&amp;gt;w/extensions/FCKeditor/fckeditor_config.js에서&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
// Setup the editor toolbar.&lt;br /&gt;
FCKConfig.ToolbarSets['Wiki'] = [&lt;br /&gt;
        ['Source'],&lt;br /&gt;
        ['Cut','Copy','Paste','PasteText','PasteWord','-','Print'],&lt;br /&gt;
        ['Undo','Redo','-','Find','Replace','-','SelectAll','RemoveFormat'],&lt;br /&gt;
        ['SpecialChar','Table','Image','Rule'],&lt;br /&gt;
&amp;lt;/source&amp;gt; 이렇게 함. 원래 &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;'PasteText','PasteWord'&amp;lt;/source&amp;gt;여기에 주석이 있었음. &amp;lt;/div&amp;gt;&lt;br /&gt;
**근데 이거 잘 안되고 있으니 다시 한번 잘 들여다볼것.&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
		
	</entry>
	<entry>
		<id>http://samediff.kr/wiki/index.php?title=%EB%82%B4%EA%B0%80_%EC%88%98%EC%A0%95%ED%95%9C_%EA%B2%83%EB%93%A4&amp;diff=16185</id>
		<title>내가 수정한 것들</title>
		<link rel="alternate" type="text/html" href="http://samediff.kr/wiki/index.php?title=%EB%82%B4%EA%B0%80_%EC%88%98%EC%A0%95%ED%95%9C_%EA%B2%83%EB%93%A4&amp;diff=16185"/>
		<updated>2020-02-01T12:26:25Z</updated>

		<summary type="html">&lt;p&gt;Admin: /* 수정한 것들 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== 수정한 것들 ==&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Extension:HighlightJS Extension:HighlightJS ]&lt;br /&gt;
** {{c|shl}}이라는 기괴한 태그를 또 추가하게 됨. 구문강조는 게쉬고 나발이고 그냥 js가 짱이다. 요즘엔 다 js가 짱이다.&lt;br /&gt;
&amp;lt;pre&amp;gt;wfLoadExtension( 'HighlightJS' ); &lt;br /&gt;
$wgHighlightJsMagic = 'shl';&lt;br /&gt;
$wgHighlightJsStyle = 'vs';&amp;lt;/pre&amp;gt;&lt;br /&gt;
* (아래 poem과 거의 비슷하게) WikiEditor에 특수문자 섹션 하나 추가 &lt;br /&gt;
** extensions/WikiEditor/modules/jquery.wikiEditor.toolbar.config.js 에 &amp;lt;c&amp;gt;special-characters-group-custom&amp;lt;/c&amp;gt;부분 추가. &lt;br /&gt;
** &amp;lt;c&amp;gt;languages/i18n/ko.json&amp;lt;/c&amp;gt;에도 &amp;lt;c&amp;gt;special-characters-group-custom&amp;lt;/c&amp;gt;부분 추가&lt;br /&gt;
** includes/resourceloader/ResourceLoaderSpecialCharacterDataModule.php 요기에도 추가&lt;br /&gt;
** resources/src/mediawiki.language/specialcharacters.json ★요게 가장 핵심. 여기에 적당한 기호들 추가. &amp;lt;c&amp;gt;&amp;quot;custom&amp;quot;&amp;lt;/c&amp;gt;부분. 특수문자는 [http://kor.pe.kr/util/4/charmap.htm 여기] 참고.&lt;br /&gt;
* &amp;lt;del&amp;gt;(언제 설치한건지, 기본으로 있는건지 모르겠는데 어쨌건,) &amp;lt;c&amp;gt;extensions/WikiEditor&amp;lt;/c&amp;gt;에서 자동으로 &amp;lt;nowiki&amp;gt;&amp;lt;poem&amp;gt;&amp;lt;/nowiki&amp;gt;을 삽입하도록 버튼 하나 추가. &amp;lt;/del&amp;gt; 이것도 제거 &lt;br /&gt;
** &amp;lt;c&amp;gt;modules/jquery.wikiEditor.toolbar.config.js&amp;lt;/c&amp;gt;에서 toolbar/main/groups/format/tools변수를 찾는다. bold와 italic 둘이 있는데 poem을 적당히 하나 추가한다.&lt;br /&gt;
** i18n/ko.json에 &amp;lt;c&amp;gt;&amp;quot;wikieditor-toolbar-tool-poem-example&amp;quot;: &amp;quot;\n&amp;quot;,&amp;lt;/c&amp;gt;를 적당한 곳에  넣고 extension.json에도 해당 변수 추가.&lt;br /&gt;
** underline하는것도 추가하려고 했는데 어찌된일인지 아이콘이 안나온다. &amp;lt;u&amp;gt;동작은 하는데&amp;lt;/u&amp;gt;.&lt;br /&gt;
* pdf업로드 가능하도록 [https://www.mediawiki.org/wiki/Manual:Configuring_file_uploads#Configuring_file_types configuration]수정 &lt;br /&gt;
* [https://www.mediawiki.org/wiki/Extension:PDFEmbed PDFEmbed extension]&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Extension:YouTube YouTube extension]&lt;br /&gt;
* 최대 업로드 크기 2M에서 10M으로 수정. /etc/php/7.0/apache2/php.ini 수정&lt;br /&gt;
*:&amp;lt;c&amp;gt;upload_max_filesize = 10M&amp;lt;/c&amp;gt;&lt;br /&gt;
*:&amp;lt;c&amp;gt;post_max_size = 10M&amp;lt;/c&amp;gt;&lt;br /&gt;
* google analytics [https://www.mediawiki.org/wiki/Extension:Google_Analytics_Integration] 2017.07.26&lt;br /&gt;
* https://www.mediawiki.org/wiki/Extension:AvbDisqus 설치함.&lt;br /&gt;
* 기본 폰트를 serif로 수정. ( skins/Vector/variables.less에서 sans-serif로 되어 있던 부분 두군데를 serif로 수정)&lt;br /&gt;
* &amp;lt;del&amp;gt;[https://www.mediawiki.org/wiki/Extension:MobileFrontend MobileFrontend] 설치 &amp;lt;/del&amp;gt;: Tweeki 스킨 설치하면 알아서 됨.&lt;br /&gt;
* &amp;lt;del&amp;gt;[https://www.mediawiki.org/wiki/Extension:MathJax MathJax] 설치&amp;lt;/del&amp;gt;&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Extension:SimpleMathJax SimpleMathJax]설치&lt;br /&gt;
* &amp;lt;del&amp;gt;[https://www.mediawiki.org/wiki/Extension:BacktickCode Backtick code] 설치 &amp;lt;/del&amp;gt; : 안되고 있음... 왜 안되는지 모름. 여튼 동작 안하는 중.&lt;br /&gt;
* BacktickCode가 동작하지 않아서 [https://www.mediawiki.org/wiki/Manual:Tag_extensions custom tag] &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;c&amp;gt;&amp;lt;/c&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; 만듦&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;extensions 폴더 안에 Courier.php파일 만들었음&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
&lt;br /&gt;
$wgHooks['ParserFirstCallInit'][] = 'CourierExtension::onParserSetup';&lt;br /&gt;
&lt;br /&gt;
class CourierExtension {&lt;br /&gt;
    // Register any render callbacks with the parser&lt;br /&gt;
    public static function onParserSetup( Parser $parser ) {&lt;br /&gt;
        // When the parser sees the &amp;lt;sample&amp;gt; tag, it executes renderTagSample (see below)&lt;br /&gt;
        $parser-&amp;gt;setHook( 'c', 'CourierExtension::renderTagSample' );&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    // Render &amp;lt;sample&amp;gt;&lt;br /&gt;
    public static function renderTagSample( $input, array $args, Parser $parser, PPFrame $frame ) {&lt;br /&gt;
        // Nothing exciting here, just escape the user-provided input and throw it back out again (as example) &lt;br /&gt;
        return &amp;quot;&amp;lt;span style='font-family:courier'&amp;gt;&amp;quot;.htmlspecialchars( $input ).&amp;quot;&amp;lt;/span&amp;gt;&amp;quot;;&lt;br /&gt;
    }                                &lt;br /&gt;
}&lt;br /&gt;
                                     &lt;br /&gt;
?&amp;gt;&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;LocalSettings.php에 아래 추가&lt;br /&gt;
&amp;lt;pre&amp;gt; require_once( &amp;quot;$IP/extensions/Courier/Courier.php&amp;quot; );&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Extension:TreeAndMenu Tree And Menu] 설치&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Extension:DeleteBatch DeleteBatch] 설치&lt;br /&gt;
* &amp;lt;del&amp;gt;includes/EditPage.php의 978line &amp;lt;pre&amp;gt;$this-&amp;gt;minoredit = true;&amp;lt;/pre&amp;gt;&amp;lt;/del&amp;gt; 이거 Admin&amp;gt;환경설정&amp;gt;편집에 '모든 편집에 기본적으로 사소한 편집을 표시'로 있음. &lt;br /&gt;
* tweeki skin[https://www.mediawiki.org/wiki/Skin:Tweeki] 설치&lt;br /&gt;
** 기본폰트 수정. bootstrap/css/bootstrap.min.css의 5번째 줄 15375 char에 'Georgia,serif'추가. (body{}에 추가}&lt;br /&gt;
** (위 수정한 것 바로 옆에) 글씨 크기 14pt에서 16pt로, line-height 1.42857143에서 17로 변경.&amp;lt;del&amp;gt; line-height가 너무 아스트랄한데?&amp;lt;/del&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;wfLoadExtension( 'Poem' );&amp;lt;/code&amp;gt;넣음. 미디어위키 기본이라 따로 뭔가 다운받을 필요는 없음.&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Extension:SyntaxHighlighter SyntaxHighlighter] &lt;br /&gt;
** 맨 뒤에 -er주의 그냥 SyntaxHighlight도 있음. &lt;br /&gt;
** 설치를 하긴 했으나, 별로 보기좋다는 생각이 안들어서 잘 안씀.&lt;br /&gt;
&lt;br /&gt;
== 아래는 구 버전 (위키 업데이트 하면서 모두 삭제됨. 무시할것) ==&lt;br /&gt;
*[http://www.mediawiki.org/wiki/Manual:Configuring_file_uploads file upload enable] &lt;br /&gt;
*[http://www.mediawiki.org/wiki/Syntaxhighlight syntax highlight extension] &lt;br /&gt;
*모바일 브라우저에서 너무 작게 보이는 문제&amp;lt;source lang=&amp;quot;html4strict&amp;quot;&amp;gt;&amp;lt;meta name=&amp;quot;viewport&amp;quot; content=&amp;quot;width=device-width&amp;quot; /&amp;gt;&amp;lt;/source&amp;gt;이걸로 해결 &lt;br /&gt;
**(QnA) [http://www.smashingmagazine.com/2011/01/11/keeping-web-users-safe-by-sanitizing-input-data/ 이 사이트]처럼 초기에는 작다가 확대하면 알아서 텍스트 폭이 변하는건 어떻게 하는걸까. 소스보기에서 &amp;lt;source lang=&amp;quot;html4strict&amp;quot;&amp;gt;&amp;lt;meta name=&amp;quot;viewport&amp;quot; content=&amp;quot;width=device-width; initial-scale=1.0&amp;quot;&amp;gt;&amp;lt;/source&amp;gt;이렇게 있었지만 이걸 내 위키에 넣어도 원하는대로 동작하지는 않았다.&amp;lt;sup&amp;gt;[https://developer.mozilla.org/en/Mobile/Viewport_meta_tag 참고자료]&amp;lt;/sup&amp;gt; &lt;br /&gt;
*fck editor에서 붙여넣기. 텍스트 뿐 아니라 서식도 가능하게 &lt;br /&gt;
**[http://www.mediawiki.org/wiki/Extension_talk:FCKeditor_(Official)#copy_and_paste_issues.3B_.22Paste_From_Word.22_icon_missing 여기]참고. &lt;br /&gt;
** &amp;lt;div&amp;gt;w/extensions/FCKeditor/fckeditor_config.js에서&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
// Setup the editor toolbar.&lt;br /&gt;
FCKConfig.ToolbarSets['Wiki'] = [&lt;br /&gt;
        ['Source'],&lt;br /&gt;
        ['Cut','Copy','Paste','PasteText','PasteWord','-','Print'],&lt;br /&gt;
        ['Undo','Redo','-','Find','Replace','-','SelectAll','RemoveFormat'],&lt;br /&gt;
        ['SpecialChar','Table','Image','Rule'],&lt;br /&gt;
&amp;lt;/source&amp;gt; 이렇게 함. 원래 &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;'PasteText','PasteWord'&amp;lt;/source&amp;gt;여기에 주석이 있었음. &amp;lt;/div&amp;gt;&lt;br /&gt;
**근데 이거 잘 안되고 있으니 다시 한번 잘 들여다볼것.&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
		
	</entry>
	<entry>
		<id>http://samediff.kr/wiki/index.php?title=%EB%82%B4%EA%B0%80_%EC%88%98%EC%A0%95%ED%95%9C_%EA%B2%83%EB%93%A4&amp;diff=16184</id>
		<title>내가 수정한 것들</title>
		<link rel="alternate" type="text/html" href="http://samediff.kr/wiki/index.php?title=%EB%82%B4%EA%B0%80_%EC%88%98%EC%A0%95%ED%95%9C_%EA%B2%83%EB%93%A4&amp;diff=16184"/>
		<updated>2020-02-01T12:24:24Z</updated>

		<summary type="html">&lt;p&gt;Admin: /* 수정한 것들 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== 수정한 것들 ==&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Extension:HighlightJS Extension:HighlightJS ]&lt;br /&gt;
** {{c|shl}}이라는 기괴한 태그를 또 추가하게 됨. 구문강조는 게쉬고 나발이고 그냥 js가 짱이다. 요즘엔 다 js가 짱이다.&lt;br /&gt;
&amp;lt;pre&amp;gt;wfLoadExtension( 'HighlightJS' ); &lt;br /&gt;
$wgHighlightJsMagic = 'shl';&lt;br /&gt;
$wgHighlightJsStyle = 'vs';&amp;lt;/pre&amp;gt;&lt;br /&gt;
* &amp;lt;del&amp;gt;(아래 poem과 거의 비슷하게) WikiEditor에 특수문자 섹션 하나 추가&amp;lt;/del&amp;gt; version update하면서 제거&lt;br /&gt;
** extensions/WikiEditor/modules/jquery.wikiEditor.toolbar.config.js 에 &amp;lt;c&amp;gt;special-characters-group-custom&amp;lt;/c&amp;gt;부분 추가. &lt;br /&gt;
** &amp;lt;c&amp;gt;languages/i18n/ko.json&amp;lt;/c&amp;gt;에도 &amp;lt;c&amp;gt;special-characters-group-custom&amp;lt;/c&amp;gt;부분 추가&lt;br /&gt;
** includes/resourceloader/ResourceLoaderSpecialCharacterDataModule.php 요기에도 추가&lt;br /&gt;
** resources/src/mediawiki.language/specialcharacters.json ★요게 가장 핵심. 여기에 적당한 기호들 추가. &amp;lt;c&amp;gt;&amp;quot;custom&amp;quot;&amp;lt;/c&amp;gt;부분. 특수문자는 [http://kor.pe.kr/util/4/charmap.htm 여기] 참고.&lt;br /&gt;
* &amp;lt;del&amp;gt;(언제 설치한건지, 기본으로 있는건지 모르겠는데 어쨌건,) &amp;lt;c&amp;gt;extensions/WikiEditor&amp;lt;/c&amp;gt;에서 자동으로 &amp;lt;nowiki&amp;gt;&amp;lt;poem&amp;gt;&amp;lt;/nowiki&amp;gt;을 삽입하도록 버튼 하나 추가. &amp;lt;/del&amp;gt; 이것도 제거 &lt;br /&gt;
** &amp;lt;c&amp;gt;modules/jquery.wikiEditor.toolbar.config.js&amp;lt;/c&amp;gt;에서 toolbar/main/groups/format/tools변수를 찾는다. bold와 italic 둘이 있는데 poem을 적당히 하나 추가한다.&lt;br /&gt;
** i18n/ko.json에 &amp;lt;c&amp;gt;&amp;quot;wikieditor-toolbar-tool-poem-example&amp;quot;: &amp;quot;\n&amp;quot;,&amp;lt;/c&amp;gt;를 적당한 곳에  넣고 extension.json에도 해당 변수 추가.&lt;br /&gt;
** underline하는것도 추가하려고 했는데 어찌된일인지 아이콘이 안나온다. &amp;lt;u&amp;gt;동작은 하는데&amp;lt;/u&amp;gt;.&lt;br /&gt;
* pdf업로드 가능하도록 [https://www.mediawiki.org/wiki/Manual:Configuring_file_uploads#Configuring_file_types configuration]수정 &lt;br /&gt;
* [https://www.mediawiki.org/wiki/Extension:PDFEmbed PDFEmbed extension]&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Extension:YouTube YouTube extension]&lt;br /&gt;
* 최대 업로드 크기 2M에서 10M으로 수정. /etc/php/7.0/apache2/php.ini 수정&lt;br /&gt;
*:&amp;lt;c&amp;gt;upload_max_filesize = 10M&amp;lt;/c&amp;gt;&lt;br /&gt;
*:&amp;lt;c&amp;gt;post_max_size = 10M&amp;lt;/c&amp;gt;&lt;br /&gt;
* google analytics [https://www.mediawiki.org/wiki/Extension:Google_Analytics_Integration] 2017.07.26&lt;br /&gt;
* https://www.mediawiki.org/wiki/Extension:AvbDisqus 설치함.&lt;br /&gt;
* 기본 폰트를 serif로 수정. ( skins/Vector/variables.less에서 sans-serif로 되어 있던 부분 두군데를 serif로 수정)&lt;br /&gt;
* &amp;lt;del&amp;gt;[https://www.mediawiki.org/wiki/Extension:MobileFrontend MobileFrontend] 설치 &amp;lt;/del&amp;gt;: Tweeki 스킨 설치하면 알아서 됨.&lt;br /&gt;
* &amp;lt;del&amp;gt;[https://www.mediawiki.org/wiki/Extension:MathJax MathJax] 설치&amp;lt;/del&amp;gt;&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Extension:SimpleMathJax SimpleMathJax]설치&lt;br /&gt;
* &amp;lt;del&amp;gt;[https://www.mediawiki.org/wiki/Extension:BacktickCode Backtick code] 설치 &amp;lt;/del&amp;gt; : 안되고 있음... 왜 안되는지 모름. 여튼 동작 안하는 중.&lt;br /&gt;
* BacktickCode가 동작하지 않아서 [https://www.mediawiki.org/wiki/Manual:Tag_extensions custom tag] &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;c&amp;gt;&amp;lt;/c&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; 만듦&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;extensions 폴더 안에 Courier.php파일 만들었음&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
&lt;br /&gt;
$wgHooks['ParserFirstCallInit'][] = 'CourierExtension::onParserSetup';&lt;br /&gt;
&lt;br /&gt;
class CourierExtension {&lt;br /&gt;
    // Register any render callbacks with the parser&lt;br /&gt;
    public static function onParserSetup( Parser $parser ) {&lt;br /&gt;
        // When the parser sees the &amp;lt;sample&amp;gt; tag, it executes renderTagSample (see below)&lt;br /&gt;
        $parser-&amp;gt;setHook( 'c', 'CourierExtension::renderTagSample' );&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    // Render &amp;lt;sample&amp;gt;&lt;br /&gt;
    public static function renderTagSample( $input, array $args, Parser $parser, PPFrame $frame ) {&lt;br /&gt;
        // Nothing exciting here, just escape the user-provided input and throw it back out again (as example) &lt;br /&gt;
        return &amp;quot;&amp;lt;span style='font-family:courier'&amp;gt;&amp;quot;.htmlspecialchars( $input ).&amp;quot;&amp;lt;/span&amp;gt;&amp;quot;;&lt;br /&gt;
    }                                &lt;br /&gt;
}&lt;br /&gt;
                                     &lt;br /&gt;
?&amp;gt;&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;LocalSettings.php에 아래 추가&lt;br /&gt;
&amp;lt;pre&amp;gt; require_once( &amp;quot;$IP/extensions/Courier/Courier.php&amp;quot; );&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Extension:TreeAndMenu Tree And Menu] 설치&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Extension:DeleteBatch DeleteBatch] 설치&lt;br /&gt;
* &amp;lt;del&amp;gt;includes/EditPage.php의 978line &amp;lt;pre&amp;gt;$this-&amp;gt;minoredit = true;&amp;lt;/pre&amp;gt;&amp;lt;/del&amp;gt; 이거 Admin&amp;gt;환경설정&amp;gt;편집에 '모든 편집에 기본적으로 사소한 편집을 표시'로 있음. &lt;br /&gt;
* tweeki skin[https://www.mediawiki.org/wiki/Skin:Tweeki] 설치&lt;br /&gt;
** 기본폰트 수정. bootstrap/css/bootstrap.min.css의 5번째 줄 15375 char에 'Georgia,serif'추가. (body{}에 추가}&lt;br /&gt;
** (위 수정한 것 바로 옆에) 글씨 크기 14pt에서 16pt로, line-height 1.42857143에서 17로 변경.&amp;lt;del&amp;gt; line-height가 너무 아스트랄한데?&amp;lt;/del&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;wfLoadExtension( 'Poem' );&amp;lt;/code&amp;gt;넣음. 미디어위키 기본이라 따로 뭔가 다운받을 필요는 없음.&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Extension:SyntaxHighlighter SyntaxHighlighter] &lt;br /&gt;
** 맨 뒤에 -er주의 그냥 SyntaxHighlight도 있음. &lt;br /&gt;
** 설치를 하긴 했으나, 별로 보기좋다는 생각이 안들어서 잘 안씀.&lt;br /&gt;
&lt;br /&gt;
== 아래는 구 버전 (위키 업데이트 하면서 모두 삭제됨. 무시할것) ==&lt;br /&gt;
*[http://www.mediawiki.org/wiki/Manual:Configuring_file_uploads file upload enable] &lt;br /&gt;
*[http://www.mediawiki.org/wiki/Syntaxhighlight syntax highlight extension] &lt;br /&gt;
*모바일 브라우저에서 너무 작게 보이는 문제&amp;lt;source lang=&amp;quot;html4strict&amp;quot;&amp;gt;&amp;lt;meta name=&amp;quot;viewport&amp;quot; content=&amp;quot;width=device-width&amp;quot; /&amp;gt;&amp;lt;/source&amp;gt;이걸로 해결 &lt;br /&gt;
**(QnA) [http://www.smashingmagazine.com/2011/01/11/keeping-web-users-safe-by-sanitizing-input-data/ 이 사이트]처럼 초기에는 작다가 확대하면 알아서 텍스트 폭이 변하는건 어떻게 하는걸까. 소스보기에서 &amp;lt;source lang=&amp;quot;html4strict&amp;quot;&amp;gt;&amp;lt;meta name=&amp;quot;viewport&amp;quot; content=&amp;quot;width=device-width; initial-scale=1.0&amp;quot;&amp;gt;&amp;lt;/source&amp;gt;이렇게 있었지만 이걸 내 위키에 넣어도 원하는대로 동작하지는 않았다.&amp;lt;sup&amp;gt;[https://developer.mozilla.org/en/Mobile/Viewport_meta_tag 참고자료]&amp;lt;/sup&amp;gt; &lt;br /&gt;
*fck editor에서 붙여넣기. 텍스트 뿐 아니라 서식도 가능하게 &lt;br /&gt;
**[http://www.mediawiki.org/wiki/Extension_talk:FCKeditor_(Official)#copy_and_paste_issues.3B_.22Paste_From_Word.22_icon_missing 여기]참고. &lt;br /&gt;
** &amp;lt;div&amp;gt;w/extensions/FCKeditor/fckeditor_config.js에서&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
// Setup the editor toolbar.&lt;br /&gt;
FCKConfig.ToolbarSets['Wiki'] = [&lt;br /&gt;
        ['Source'],&lt;br /&gt;
        ['Cut','Copy','Paste','PasteText','PasteWord','-','Print'],&lt;br /&gt;
        ['Undo','Redo','-','Find','Replace','-','SelectAll','RemoveFormat'],&lt;br /&gt;
        ['SpecialChar','Table','Image','Rule'],&lt;br /&gt;
&amp;lt;/source&amp;gt; 이렇게 함. 원래 &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;'PasteText','PasteWord'&amp;lt;/source&amp;gt;여기에 주석이 있었음. &amp;lt;/div&amp;gt;&lt;br /&gt;
**근데 이거 잘 안되고 있으니 다시 한번 잘 들여다볼것.&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
		
	</entry>
	<entry>
		<id>http://samediff.kr/wiki/index.php?title=%EB%82%B4%EA%B0%80_%EC%88%98%EC%A0%95%ED%95%9C_%EA%B2%83%EB%93%A4&amp;diff=16183</id>
		<title>내가 수정한 것들</title>
		<link rel="alternate" type="text/html" href="http://samediff.kr/wiki/index.php?title=%EB%82%B4%EA%B0%80_%EC%88%98%EC%A0%95%ED%95%9C_%EA%B2%83%EB%93%A4&amp;diff=16183"/>
		<updated>2020-02-01T06:01:29Z</updated>

		<summary type="html">&lt;p&gt;Admin: /* 수정한 것들 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== 수정한 것들 ==&lt;br /&gt;
* &amp;lt;del&amp;gt;[https://www.mediawiki.org/wiki/Extension:HighlightJS Extension:HighlightJS ]&amp;lt;/del&amp;gt; version update하면서 뭔가 이부분이 바뀐것 같아서 제거. &lt;br /&gt;
** {{c|shl}}이라는 기괴한 태그를 또 추가하게 됨. 구문강조는 게쉬고 나발이고 그냥 js가 짱이다. 요즘엔 다 js가 짱이다.&lt;br /&gt;
&amp;lt;pre&amp;gt;wfLoadExtension( 'HighlightJS' ); &lt;br /&gt;
$wgHighlightJsMagic = 'shl';&lt;br /&gt;
$wgHighlightJsStyle = 'vs';&amp;lt;/pre&amp;gt;&lt;br /&gt;
* &amp;lt;del&amp;gt;(아래 poem과 거의 비슷하게) WikiEditor에 특수문자 섹션 하나 추가&amp;lt;/del&amp;gt; version update하면서 제거&lt;br /&gt;
** extensions/WikiEditor/modules/jquery.wikiEditor.toolbar.config.js 에 &amp;lt;c&amp;gt;special-characters-group-custom&amp;lt;/c&amp;gt;부분 추가. &lt;br /&gt;
** &amp;lt;c&amp;gt;languages/i18n/ko.json&amp;lt;/c&amp;gt;에도 &amp;lt;c&amp;gt;special-characters-group-custom&amp;lt;/c&amp;gt;부분 추가&lt;br /&gt;
** includes/resourceloader/ResourceLoaderSpecialCharacterDataModule.php 요기에도 추가&lt;br /&gt;
** resources/src/mediawiki.language/specialcharacters.json ★요게 가장 핵심. 여기에 적당한 기호들 추가. &amp;lt;c&amp;gt;&amp;quot;custom&amp;quot;&amp;lt;/c&amp;gt;부분. 특수문자는 [http://kor.pe.kr/util/4/charmap.htm 여기] 참고.&lt;br /&gt;
* &amp;lt;del&amp;gt;(언제 설치한건지, 기본으로 있는건지 모르겠는데 어쨌건,) &amp;lt;c&amp;gt;extensions/WikiEditor&amp;lt;/c&amp;gt;에서 자동으로 &amp;lt;nowiki&amp;gt;&amp;lt;poem&amp;gt;&amp;lt;/nowiki&amp;gt;을 삽입하도록 버튼 하나 추가. &amp;lt;/del&amp;gt; 이것도 제거 &lt;br /&gt;
** &amp;lt;c&amp;gt;modules/jquery.wikiEditor.toolbar.config.js&amp;lt;/c&amp;gt;에서 toolbar/main/groups/format/tools변수를 찾는다. bold와 italic 둘이 있는데 poem을 적당히 하나 추가한다.&lt;br /&gt;
** i18n/ko.json에 &amp;lt;c&amp;gt;&amp;quot;wikieditor-toolbar-tool-poem-example&amp;quot;: &amp;quot;\n&amp;quot;,&amp;lt;/c&amp;gt;를 적당한 곳에  넣고 extension.json에도 해당 변수 추가.&lt;br /&gt;
** underline하는것도 추가하려고 했는데 어찌된일인지 아이콘이 안나온다. &amp;lt;u&amp;gt;동작은 하는데&amp;lt;/u&amp;gt;.&lt;br /&gt;
* pdf업로드 가능하도록 [https://www.mediawiki.org/wiki/Manual:Configuring_file_uploads#Configuring_file_types configuration]수정 &lt;br /&gt;
* [https://www.mediawiki.org/wiki/Extension:PDFEmbed PDFEmbed extension]&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Extension:YouTube YouTube extension]&lt;br /&gt;
* 최대 업로드 크기 2M에서 10M으로 수정. /etc/php/7.0/apache2/php.ini 수정&lt;br /&gt;
*:&amp;lt;c&amp;gt;upload_max_filesize = 10M&amp;lt;/c&amp;gt;&lt;br /&gt;
*:&amp;lt;c&amp;gt;post_max_size = 10M&amp;lt;/c&amp;gt;&lt;br /&gt;
* google analytics [https://www.mediawiki.org/wiki/Extension:Google_Analytics_Integration] 2017.07.26&lt;br /&gt;
* https://www.mediawiki.org/wiki/Extension:AvbDisqus 설치함.&lt;br /&gt;
* 기본 폰트를 serif로 수정. ( skins/Vector/variables.less에서 sans-serif로 되어 있던 부분 두군데를 serif로 수정)&lt;br /&gt;
* &amp;lt;del&amp;gt;[https://www.mediawiki.org/wiki/Extension:MobileFrontend MobileFrontend] 설치 &amp;lt;/del&amp;gt;: Tweeki 스킨 설치하면 알아서 됨.&lt;br /&gt;
* &amp;lt;del&amp;gt;[https://www.mediawiki.org/wiki/Extension:MathJax MathJax] 설치&amp;lt;/del&amp;gt;&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Extension:SimpleMathJax SimpleMathJax]설치&lt;br /&gt;
* &amp;lt;del&amp;gt;[https://www.mediawiki.org/wiki/Extension:BacktickCode Backtick code] 설치 &amp;lt;/del&amp;gt; : 안되고 있음... 왜 안되는지 모름. 여튼 동작 안하는 중.&lt;br /&gt;
* BacktickCode가 동작하지 않아서 [https://www.mediawiki.org/wiki/Manual:Tag_extensions custom tag] &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;c&amp;gt;&amp;lt;/c&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; 만듦&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;extensions 폴더 안에 Courier.php파일 만들었음&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
&lt;br /&gt;
$wgHooks['ParserFirstCallInit'][] = 'CourierExtension::onParserSetup';&lt;br /&gt;
&lt;br /&gt;
class CourierExtension {&lt;br /&gt;
    // Register any render callbacks with the parser&lt;br /&gt;
    public static function onParserSetup( Parser $parser ) {&lt;br /&gt;
        // When the parser sees the &amp;lt;sample&amp;gt; tag, it executes renderTagSample (see below)&lt;br /&gt;
        $parser-&amp;gt;setHook( 'c', 'CourierExtension::renderTagSample' );&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    // Render &amp;lt;sample&amp;gt;&lt;br /&gt;
    public static function renderTagSample( $input, array $args, Parser $parser, PPFrame $frame ) {&lt;br /&gt;
        // Nothing exciting here, just escape the user-provided input and throw it back out again (as example) &lt;br /&gt;
        return &amp;quot;&amp;lt;span style='font-family:courier'&amp;gt;&amp;quot;.htmlspecialchars( $input ).&amp;quot;&amp;lt;/span&amp;gt;&amp;quot;;&lt;br /&gt;
    }                                &lt;br /&gt;
}&lt;br /&gt;
                                     &lt;br /&gt;
?&amp;gt;&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;LocalSettings.php에 아래 추가&lt;br /&gt;
&amp;lt;pre&amp;gt; require_once( &amp;quot;$IP/extensions/Courier/Courier.php&amp;quot; );&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Extension:TreeAndMenu Tree And Menu] 설치&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Extension:DeleteBatch DeleteBatch] 설치&lt;br /&gt;
* &amp;lt;del&amp;gt;includes/EditPage.php의 978line &amp;lt;pre&amp;gt;$this-&amp;gt;minoredit = true;&amp;lt;/pre&amp;gt;&amp;lt;/del&amp;gt; 이거 Admin&amp;gt;환경설정&amp;gt;편집에 '모든 편집에 기본적으로 사소한 편집을 표시'로 있음. &lt;br /&gt;
* tweeki skin[https://www.mediawiki.org/wiki/Skin:Tweeki] 설치&lt;br /&gt;
** 기본폰트 수정. bootstrap/css/bootstrap.min.css의 5번째 줄 15375 char에 'Georgia,serif'추가. (body{}에 추가}&lt;br /&gt;
** (위 수정한 것 바로 옆에) 글씨 크기 14pt에서 16pt로, line-height 1.42857143에서 17로 변경.&amp;lt;del&amp;gt; line-height가 너무 아스트랄한데?&amp;lt;/del&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;wfLoadExtension( 'Poem' );&amp;lt;/code&amp;gt;넣음. 미디어위키 기본이라 따로 뭔가 다운받을 필요는 없음.&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Extension:SyntaxHighlighter SyntaxHighlighter] &lt;br /&gt;
** 맨 뒤에 -er주의 그냥 SyntaxHighlight도 있음. &lt;br /&gt;
** 설치를 하긴 했으나, 별로 보기좋다는 생각이 안들어서 잘 안씀.&lt;br /&gt;
&lt;br /&gt;
== 아래는 구 버전 (위키 업데이트 하면서 모두 삭제됨. 무시할것) ==&lt;br /&gt;
*[http://www.mediawiki.org/wiki/Manual:Configuring_file_uploads file upload enable] &lt;br /&gt;
*[http://www.mediawiki.org/wiki/Syntaxhighlight syntax highlight extension] &lt;br /&gt;
*모바일 브라우저에서 너무 작게 보이는 문제&amp;lt;source lang=&amp;quot;html4strict&amp;quot;&amp;gt;&amp;lt;meta name=&amp;quot;viewport&amp;quot; content=&amp;quot;width=device-width&amp;quot; /&amp;gt;&amp;lt;/source&amp;gt;이걸로 해결 &lt;br /&gt;
**(QnA) [http://www.smashingmagazine.com/2011/01/11/keeping-web-users-safe-by-sanitizing-input-data/ 이 사이트]처럼 초기에는 작다가 확대하면 알아서 텍스트 폭이 변하는건 어떻게 하는걸까. 소스보기에서 &amp;lt;source lang=&amp;quot;html4strict&amp;quot;&amp;gt;&amp;lt;meta name=&amp;quot;viewport&amp;quot; content=&amp;quot;width=device-width; initial-scale=1.0&amp;quot;&amp;gt;&amp;lt;/source&amp;gt;이렇게 있었지만 이걸 내 위키에 넣어도 원하는대로 동작하지는 않았다.&amp;lt;sup&amp;gt;[https://developer.mozilla.org/en/Mobile/Viewport_meta_tag 참고자료]&amp;lt;/sup&amp;gt; &lt;br /&gt;
*fck editor에서 붙여넣기. 텍스트 뿐 아니라 서식도 가능하게 &lt;br /&gt;
**[http://www.mediawiki.org/wiki/Extension_talk:FCKeditor_(Official)#copy_and_paste_issues.3B_.22Paste_From_Word.22_icon_missing 여기]참고. &lt;br /&gt;
** &amp;lt;div&amp;gt;w/extensions/FCKeditor/fckeditor_config.js에서&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
// Setup the editor toolbar.&lt;br /&gt;
FCKConfig.ToolbarSets['Wiki'] = [&lt;br /&gt;
        ['Source'],&lt;br /&gt;
        ['Cut','Copy','Paste','PasteText','PasteWord','-','Print'],&lt;br /&gt;
        ['Undo','Redo','-','Find','Replace','-','SelectAll','RemoveFormat'],&lt;br /&gt;
        ['SpecialChar','Table','Image','Rule'],&lt;br /&gt;
&amp;lt;/source&amp;gt; 이렇게 함. 원래 &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;'PasteText','PasteWord'&amp;lt;/source&amp;gt;여기에 주석이 있었음. &amp;lt;/div&amp;gt;&lt;br /&gt;
**근데 이거 잘 안되고 있으니 다시 한번 잘 들여다볼것.&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
		
	</entry>
	<entry>
		<id>http://samediff.kr/wiki/index.php?title=%EB%82%B4%EA%B0%80_%EC%88%98%EC%A0%95%ED%95%9C_%EA%B2%83%EB%93%A4&amp;diff=16182</id>
		<title>내가 수정한 것들</title>
		<link rel="alternate" type="text/html" href="http://samediff.kr/wiki/index.php?title=%EB%82%B4%EA%B0%80_%EC%88%98%EC%A0%95%ED%95%9C_%EA%B2%83%EB%93%A4&amp;diff=16182"/>
		<updated>2020-02-01T06:00:59Z</updated>

		<summary type="html">&lt;p&gt;Admin: /* 수정한 것들 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== 수정한 것들 ==&lt;br /&gt;
* &amp;lt;del&amp;gt;[https://www.mediawiki.org/wiki/Extension:HighlightJS Extension:HighlightJS ]&amp;lt;/del&amp;gt; version update하면서 뭔가 이부분이 바뀐것 같아서 제거. &lt;br /&gt;
** {{c|shl}}이라는 기괴한 태그를 또 추가하게 됨. 구문강조는 게쉬고 나발이고 그냥 js가 짱이다. 요즘엔 다 js가 짱이다.&lt;br /&gt;
&amp;lt;pre&amp;gt;wfLoadExtension( 'HighlightJS' ); &lt;br /&gt;
$wgHighlightJsMagic = 'shl';&lt;br /&gt;
$wgHighlightJsStyle = 'vs';&amp;lt;/pre&amp;gt;&lt;br /&gt;
* &amp;lt;del&amp;gt;(아래 poem과 거의 비슷하게) WikiEditor에 특수문자 섹션 하나 추가&amp;lt;/del&amp;gt; version update하면서 제거&lt;br /&gt;
** extensions/WikiEditor/modules/jquery.wikiEditor.toolbar.config.js 에 &amp;lt;c&amp;gt;special-characters-group-custom&amp;lt;/c&amp;gt;부분 추가. &lt;br /&gt;
** &amp;lt;c&amp;gt;languages/i18n/ko.json&amp;lt;/c&amp;gt;에도 &amp;lt;c&amp;gt;special-characters-group-custom&amp;lt;/c&amp;gt;부분 추가&lt;br /&gt;
** includes/resourceloader/ResourceLoaderSpecialCharacterDataModule.php 요기에도 추가&lt;br /&gt;
** resources/src/mediawiki.language/specialcharacters.json ★요게 가장 핵심. 여기에 적당한 기호들 추가. &amp;lt;c&amp;gt;&amp;quot;custom&amp;quot;&amp;lt;/c&amp;gt;부분. 특수문자는 [http://kor.pe.kr/util/4/charmap.htm 여기] 참고.&lt;br /&gt;
* (언제 설치한건지, 기본으로 있는건지 모르겠는데 어쨌건,) &amp;lt;c&amp;gt;extensions/WikiEditor&amp;lt;/c&amp;gt;에서 자동으로 &amp;lt;nowiki&amp;gt;&amp;lt;poem&amp;gt;&amp;lt;/nowiki&amp;gt;을 삽입하도록 버튼 하나 추가. &lt;br /&gt;
** &amp;lt;c&amp;gt;modules/jquery.wikiEditor.toolbar.config.js&amp;lt;/c&amp;gt;에서 toolbar/main/groups/format/tools변수를 찾는다. bold와 italic 둘이 있는데 poem을 적당히 하나 추가한다.&lt;br /&gt;
** i18n/ko.json에 &amp;lt;c&amp;gt;&amp;quot;wikieditor-toolbar-tool-poem-example&amp;quot;: &amp;quot;\n&amp;quot;,&amp;lt;/c&amp;gt;를 적당한 곳에  넣고 extension.json에도 해당 변수 추가.&lt;br /&gt;
** underline하는것도 추가하려고 했는데 어찌된일인지 아이콘이 안나온다. &amp;lt;u&amp;gt;동작은 하는데&amp;lt;/u&amp;gt;.&lt;br /&gt;
* pdf업로드 가능하도록 [https://www.mediawiki.org/wiki/Manual:Configuring_file_uploads#Configuring_file_types configuration]수정 &lt;br /&gt;
* [https://www.mediawiki.org/wiki/Extension:PDFEmbed PDFEmbed extension]&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Extension:YouTube YouTube extension]&lt;br /&gt;
* 최대 업로드 크기 2M에서 10M으로 수정. /etc/php/7.0/apache2/php.ini 수정&lt;br /&gt;
*:&amp;lt;c&amp;gt;upload_max_filesize = 10M&amp;lt;/c&amp;gt;&lt;br /&gt;
*:&amp;lt;c&amp;gt;post_max_size = 10M&amp;lt;/c&amp;gt;&lt;br /&gt;
* google analytics [https://www.mediawiki.org/wiki/Extension:Google_Analytics_Integration] 2017.07.26&lt;br /&gt;
* https://www.mediawiki.org/wiki/Extension:AvbDisqus 설치함.&lt;br /&gt;
* 기본 폰트를 serif로 수정. ( skins/Vector/variables.less에서 sans-serif로 되어 있던 부분 두군데를 serif로 수정)&lt;br /&gt;
* &amp;lt;del&amp;gt;[https://www.mediawiki.org/wiki/Extension:MobileFrontend MobileFrontend] 설치 &amp;lt;/del&amp;gt;: Tweeki 스킨 설치하면 알아서 됨.&lt;br /&gt;
* &amp;lt;del&amp;gt;[https://www.mediawiki.org/wiki/Extension:MathJax MathJax] 설치&amp;lt;/del&amp;gt;&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Extension:SimpleMathJax SimpleMathJax]설치&lt;br /&gt;
* &amp;lt;del&amp;gt;[https://www.mediawiki.org/wiki/Extension:BacktickCode Backtick code] 설치 &amp;lt;/del&amp;gt; : 안되고 있음... 왜 안되는지 모름. 여튼 동작 안하는 중.&lt;br /&gt;
* BacktickCode가 동작하지 않아서 [https://www.mediawiki.org/wiki/Manual:Tag_extensions custom tag] &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;c&amp;gt;&amp;lt;/c&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; 만듦&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;extensions 폴더 안에 Courier.php파일 만들었음&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
&lt;br /&gt;
$wgHooks['ParserFirstCallInit'][] = 'CourierExtension::onParserSetup';&lt;br /&gt;
&lt;br /&gt;
class CourierExtension {&lt;br /&gt;
    // Register any render callbacks with the parser&lt;br /&gt;
    public static function onParserSetup( Parser $parser ) {&lt;br /&gt;
        // When the parser sees the &amp;lt;sample&amp;gt; tag, it executes renderTagSample (see below)&lt;br /&gt;
        $parser-&amp;gt;setHook( 'c', 'CourierExtension::renderTagSample' );&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    // Render &amp;lt;sample&amp;gt;&lt;br /&gt;
    public static function renderTagSample( $input, array $args, Parser $parser, PPFrame $frame ) {&lt;br /&gt;
        // Nothing exciting here, just escape the user-provided input and throw it back out again (as example) &lt;br /&gt;
        return &amp;quot;&amp;lt;span style='font-family:courier'&amp;gt;&amp;quot;.htmlspecialchars( $input ).&amp;quot;&amp;lt;/span&amp;gt;&amp;quot;;&lt;br /&gt;
    }                                &lt;br /&gt;
}&lt;br /&gt;
                                     &lt;br /&gt;
?&amp;gt;&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;LocalSettings.php에 아래 추가&lt;br /&gt;
&amp;lt;pre&amp;gt; require_once( &amp;quot;$IP/extensions/Courier/Courier.php&amp;quot; );&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Extension:TreeAndMenu Tree And Menu] 설치&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Extension:DeleteBatch DeleteBatch] 설치&lt;br /&gt;
* &amp;lt;del&amp;gt;includes/EditPage.php의 978line &amp;lt;pre&amp;gt;$this-&amp;gt;minoredit = true;&amp;lt;/pre&amp;gt;&amp;lt;/del&amp;gt; 이거 Admin&amp;gt;환경설정&amp;gt;편집에 '모든 편집에 기본적으로 사소한 편집을 표시'로 있음. &lt;br /&gt;
* tweeki skin[https://www.mediawiki.org/wiki/Skin:Tweeki] 설치&lt;br /&gt;
** 기본폰트 수정. bootstrap/css/bootstrap.min.css의 5번째 줄 15375 char에 'Georgia,serif'추가. (body{}에 추가}&lt;br /&gt;
** (위 수정한 것 바로 옆에) 글씨 크기 14pt에서 16pt로, line-height 1.42857143에서 17로 변경.&amp;lt;del&amp;gt; line-height가 너무 아스트랄한데?&amp;lt;/del&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;wfLoadExtension( 'Poem' );&amp;lt;/code&amp;gt;넣음. 미디어위키 기본이라 따로 뭔가 다운받을 필요는 없음.&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Extension:SyntaxHighlighter SyntaxHighlighter] &lt;br /&gt;
** 맨 뒤에 -er주의 그냥 SyntaxHighlight도 있음. &lt;br /&gt;
** 설치를 하긴 했으나, 별로 보기좋다는 생각이 안들어서 잘 안씀.&lt;br /&gt;
&lt;br /&gt;
== 아래는 구 버전 (위키 업데이트 하면서 모두 삭제됨. 무시할것) ==&lt;br /&gt;
*[http://www.mediawiki.org/wiki/Manual:Configuring_file_uploads file upload enable] &lt;br /&gt;
*[http://www.mediawiki.org/wiki/Syntaxhighlight syntax highlight extension] &lt;br /&gt;
*모바일 브라우저에서 너무 작게 보이는 문제&amp;lt;source lang=&amp;quot;html4strict&amp;quot;&amp;gt;&amp;lt;meta name=&amp;quot;viewport&amp;quot; content=&amp;quot;width=device-width&amp;quot; /&amp;gt;&amp;lt;/source&amp;gt;이걸로 해결 &lt;br /&gt;
**(QnA) [http://www.smashingmagazine.com/2011/01/11/keeping-web-users-safe-by-sanitizing-input-data/ 이 사이트]처럼 초기에는 작다가 확대하면 알아서 텍스트 폭이 변하는건 어떻게 하는걸까. 소스보기에서 &amp;lt;source lang=&amp;quot;html4strict&amp;quot;&amp;gt;&amp;lt;meta name=&amp;quot;viewport&amp;quot; content=&amp;quot;width=device-width; initial-scale=1.0&amp;quot;&amp;gt;&amp;lt;/source&amp;gt;이렇게 있었지만 이걸 내 위키에 넣어도 원하는대로 동작하지는 않았다.&amp;lt;sup&amp;gt;[https://developer.mozilla.org/en/Mobile/Viewport_meta_tag 참고자료]&amp;lt;/sup&amp;gt; &lt;br /&gt;
*fck editor에서 붙여넣기. 텍스트 뿐 아니라 서식도 가능하게 &lt;br /&gt;
**[http://www.mediawiki.org/wiki/Extension_talk:FCKeditor_(Official)#copy_and_paste_issues.3B_.22Paste_From_Word.22_icon_missing 여기]참고. &lt;br /&gt;
** &amp;lt;div&amp;gt;w/extensions/FCKeditor/fckeditor_config.js에서&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
// Setup the editor toolbar.&lt;br /&gt;
FCKConfig.ToolbarSets['Wiki'] = [&lt;br /&gt;
        ['Source'],&lt;br /&gt;
        ['Cut','Copy','Paste','PasteText','PasteWord','-','Print'],&lt;br /&gt;
        ['Undo','Redo','-','Find','Replace','-','SelectAll','RemoveFormat'],&lt;br /&gt;
        ['SpecialChar','Table','Image','Rule'],&lt;br /&gt;
&amp;lt;/source&amp;gt; 이렇게 함. 원래 &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;'PasteText','PasteWord'&amp;lt;/source&amp;gt;여기에 주석이 있었음. &amp;lt;/div&amp;gt;&lt;br /&gt;
**근데 이거 잘 안되고 있으니 다시 한번 잘 들여다볼것.&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
		
	</entry>
	<entry>
		<id>http://samediff.kr/wiki/index.php?title=0121_unfold&amp;diff=16181</id>
		<title>0121 unfold</title>
		<link rel="alternate" type="text/html" href="http://samediff.kr/wiki/index.php?title=0121_unfold&amp;diff=16181"/>
		<updated>2020-01-21T06:21:59Z</updated>

		<summary type="html">&lt;p&gt;Admin: 새 문서: pytorch의 unfold function에 관한 이해  [https://github.com/pilhoon/wiki_public/wiki/unfold github]&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;pytorch의 unfold function에 관한 이해&lt;br /&gt;
&lt;br /&gt;
[https://github.com/pilhoon/wiki_public/wiki/unfold github]&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
		
	</entry>
	<entry>
		<id>http://samediff.kr/wiki/index.php?title=Blog2020&amp;diff=16180</id>
		<title>Blog2020</title>
		<link rel="alternate" type="text/html" href="http://samediff.kr/wiki/index.php?title=Blog2020&amp;diff=16180"/>
		<updated>2020-01-21T06:00:14Z</updated>

		<summary type="html">&lt;p&gt;Admin: 새 문서: ==2020== :0121 unfold&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==2020==&lt;br /&gt;
:[[0121 unfold]]&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
		
	</entry>
</feed>