생각하는섬 http://reedyfox.com ko 팀블로그 생각하는섬, 아웃사이더 크리스찬들의 바닷가 위선자들 http://reedyfox.com/island.php/fox/1946 노무현은 낙선할 것을 알면서도 부산에서 국회의원 출마를 했다. 그리고 당연히 낙선했다. 그의 출마 목표는 하나였다. 지역주의를 허무는 씨앗이 되는 것. 자신의 신념을 실천하기 위해 그는 고통스럽고 힘든 길을 묵묵히 걸어갔다.

누구나 옳은 말은 할 수 있다. 옳은 말을 실천하기 위한 희생이 어려울 뿐이다. 누구나 과실의 달콤함을 외치고 그 과실을 키워야 한다는 당위는 쉽게 이야기 하지만, 그 과실을 키워내는 거름과 토양이 되는 것에 대해선 침묵한다. 빛도 없이 이름도 없이 썩어지는 씨앗이 되는 것은 거부한다.

"이상은 알지만 현실은 이러하니 일단 나도 현실대로 행동하겠다."

나는 조국을 위선자로 본다. 그가 트위터나 페이스북에 쏟아냈던 수많은 정의와 이상의 담론을 보라. 그러나 그 정의와 이상은 그의 글 속에서만 존재했고, 자식을 번듯한 상층계급으로 끌어올려야 한다는 현실 속에서 표창장과 증명서를 위조(하거나 적어도 방조)하는 것이 그의 본질이었다.

새로 지명된 중소기업벤처부 장관 후보자와 문화체육관광부 장관 후보자가 평소 공교육의 중요성을 설파하고 특수목적고 폐지를 주장해왔던 인물들인데, 정작 자신의 자녀들은 외국어고나 외국인고등학교에 보내고 있다는 사실은 우리의 마음을 참담하게 한다. 초대 공수처장으로 지명된, 적어도 떡검, 견찰이라 조롱당하는 이들보다는 높은 윤리수준을 갖고 있으리라 생각했던 사람조차도 실정법을 위반하고 위장전입을 했다.

옳은 말을 하는 사람들도 그 말을 전혀 실천하지 않는 세상. 그렇다면 왜 우리는 옳게 살아야 하는가? 그들이 사는 세상과 우리가 사는 세상이 다른가? 그들이 사는 세상은 현실이 이러하니 어쩔 수 없이 옳게 살 수 없는 세상이고, 우리가 사는 세상은 현실이 이렇더라도 손해를 감수하고 옳게 살아야 하는 세상인가?

그래서 나는 조국과 같은 부류들을 위선자라고 생각하는 것이다. 행함도 없고 행할 의지도 없이, 그저 담론으로만 주장되는 정의와 이상은 지적인 허영일 뿐인 거니까.

젊은 날의 김동호 목사님을 지도하셨던 한 원로목사님은 은퇴식에서 "명한대로 하였다고 종에게 감사하겠느냐 이와 같이 너희도 명령 받은 것을 다 행한 후에 이르기를 우리는 무익한 종이라 우리가 하여야 할 일을 한 것뿐이라 할지니라" 라고 말씀하셨다고 한다. 그러고 일체 자신의 공로를 내세우거나 자기 자리를 만들지 않으셨다고 한다. 김동호 목사님은 평생 그 분 흉내라도 내기 위해 치열히도 노력해오셨다고 한다. 그 신념 덕에 자신의 자식 목사에게 변변한 사역지 하나 마련해주지 않았고, '일용할 양식을 주시는 하나님만 의지하는 목사', '자립하는 목사'가 된 것을 감사해 하신다고 한다.

누군들 자기 자식 새끼가 귀하지 않겠는가? 하지만 자기 자식을 위해서 하려고 하는 행동이 옳지 않은 일이라면 설사 그것 때문에 자식의 삶이 평탄치 못하고 손해를 보게 되더라도 그래서는 안되는 것이다. 아니, 그럴 것이면 차라리 정의와 이상을 말하지는 말아라. 적어도 위선자는 되지 않지 않겠는가.

]]>
헤드라인 리디 2021-02-05T07:25:07+09:00
김동호 목사의 언행일치 http://reedyfox.com/island.php/fox/1945 요즘엔 저녁에 설거지 하면서 김동호 목사님의 '날마다 기막힌 새벽'을 듣는다.

며칠동안 어떤 문제를 처리하는 방법을 여러가지로 고민하고 있었고, 나름 똑똑하고 교묘하게 계획을 수립했다고 생각하고 있었는데, 김동호 목사님 말씀을 듣고 마음이 찔렸다. 그 모든 계획은 하나님의 계획이 아니라 사람의 계획이라는 생각이 들었다. 내가 하나님을 의지하는 게 아니라 돈과 사람을 의지하고 있구나 하는 생각이 들었다. 그래서 모두 포기하기로 했다. 불이익과 손해를 감수하기로 했다. 그래야 찔림이 없을 것 같았기 때문이다.

김동호 목사님은 참 대단한 분이다. 이 분을 한 마디로 요약할 말을 찾아보니까 '언행일치' 같다. 내가 20대 때 이 분이 하시던 말씀이나 내가 40대 넘어서 이 분이 하시는 말씀이나 똑같다. 내가 20대 때 이 분이 하셨던 행동이나 지금 이 분이 하시는 행동이 전혀 차이가 없다.

그래서 이 분의 설교 말씀에 하나님께서 주시는 감동과 역사가 있는 것 같다. 어리석은 나를 깨우쳐 주심에 감사....

#김동호목사 #날마다기막힌새벽

https://youtu.be/Z3W9o0obtdo
]]>
헤드라인 리디 2020-10-18T06:55:49+09:00
재난 스릴러 추천 영화 - 콰이어트 플레이스, 버드 박스 http://reedyfox.com/island.php/fox/1944 재난 스릴러 영화를 좋아하는 분께 영화 두 편을 추천해 드립니다.

이 두편의 영화는 컨셉이 비슷합니다.

ㅇ전 지구적/궤멸적 재난
ㅇ일상적이면서 기본적인 것들이 생명을 위협하는 원인이 됨(보면 죽음 / 말하면 죽음)
ㅇ생명 유지를 위한 규칙 준수가 어려운 어린이/유아라는 존재
ㅇ모성애/부성애

재난 블록버스터 아니고 스릴러입니다. 주의하세요. ^^;;;

ㅇ콰이어트 플레이스
https://www.netflix.com/title/80213226?s=a&trkid=13747225&t=cp

ㅇ버드 박스
https://www.netflix.com/title/80196789?s=a&trkid=13747225&t=cp ]]>
헤드라인 리디 2020-07-16T07:22:34+09:00
:) http://reedyfox.com/island.php/board/2702 장가갑니다. :)
http://mcard.itscard.co.kr/eond [새창에서 열기] ]]>
일반 정낙훈 2019-12-18T22:44:38+09:00
[영화] 엑시트(2019) http://reedyfox.com/island.php/fox/1943 1. 군더더기 없고 깔끔한 웰메이드 영화
2. 재난영화에 클리셰처럼 등장하는 발암상황이나 캐릭터가 없음
3. 윤아가 언제부터 이렇게 연기를 잘 했던가!?! ]]>
헤드라인 리디 2019-08-14T06:50:26+09:00
잘 지내시죠! http://reedyfox.com/island.php/board/2701 이 게시판 오랜만이네요 ㅎㅎ
잘 지내시죠?! ]]>
일반 정낙훈 2018-10-05T11:11:17+09:00
PHP 5 이상으로 이전시 로그인 안되는 문제 http://reedyfox.com/island.php/building/89 Mysql 4.1 버전에서 제로보드 호환에 문제가 되는 이유

1. PASSWORD 함수의 사용바이트 수 증가
기존 4.0 까지의 password() 함수는 함호화를 위해 16 바이트를
사용했는데 4.1 부터는 41 바이트를 사용합니다.
그리고 4.1 에서 4.0 이전의 16 바이트 함수는 old_password() 라는
이름으로 바뀌었습니다.

아래는 4.1 에서의 간단한 예입니다.

mysql> select password('aabbcc');
+-------------------------------------------+
| password('aabbcc') |
+-------------------------------------------+
| *2413A83E64BC8C0B97D3072004D15A19E48A1C00 |
+-------------------------------------------+
1 row in set (0.00 sec)

mysql> select old_password('aabbcc');
+------------------------+
| old_password('aabbcc') |
+------------------------+
| 2cbf598202278785 |
+------------------------+
1 row in set (0.00 sec)

mysql> select length(password('aabbcc'));
+----------------------------+
| length(password('aabbcc')) |
+----------------------------+
| 41 |
+----------------------------+
1 row in set (0.00 sec)

mysql> select length(old_password('aabbcc'));
+--------------------------------+
| length(old_password('aabbcc')) |
+--------------------------------+
| 16 |
+--------------------------------+
1 row in set (0.00 sec)



2. 테이블 생성 스키마 제한

제로보드에서 새 테이블을 생성할때 소스 디렉토리의 schema.sql 이라는 파일을
통해서 생성합니다.
Mysql 4.1 에서는 create table 에서

create table $admin_table (
no int(11) default '0' not null auto_increment primary key,
group_no int(20) unsigned not null,
....

와 같이 auto_increment 옵션을 준 칼럼에 default '0' 과 같은
디폴트 값을 같이 사용할 수가 없습니다.

그렇게 사용하면 아래 처럼 에러가 납니다. 당연히 제로보드에서
테이블 생성이 안됩니다.


mysql> create table aaaa ( id int default '0' not null auto_increment primary key );
ERROR 1067 (42000): Invalid default value for 'id'

mysql> create table aaaa ( id int not null auto_increment primary key );
Query OK, 0 rows affected (0.01 sec)




위 두가지만 잘 이해하면 Mysql 4.1 에서 제로보드 사용시 발생하는 에러들의 원인을
찾을 수가 있습니다.
좀더 구체적으로 보면..


[무조건 해야하는 작업]

제로보드를 처음으로 설치해서 사용하든 이전 제로보드데이타와 소스를 옮기든지
반드시 무조건 해야하는 작업은 schema.sql 이라는 파일에서
default '0' not null auto_increment 이부분에서 default '0' 을 삭제합니다.
모든 default '0'을 삭제하는 것이 아니라 반드시 auto_increment 와 같이 사용되는
칼럼의 default '0' 을 삭제합니다.

그리고 패스워드 저장하는 칼럼의 크기도 이전 20 에서 41 로 늘려주는 것이
좋습니다. 아래에서 다시..










[ 4.1 버전의 새 password() 함수를 사용할 경우]

최초로 제로보드를 깔아서 사용하려는 사람들에게 적용될 듯합니다.
좀더 보안이 강화된 4.1 버전의 password 함수를 사용하려면 php 소스는
그대로 두고 schema.sql 파일을 추가 수정해야 합니다.

위에서는 schema.sql 의 default '0' 부분만 수정했는데
이번에는 password 를 저장하는 칼럼의 크기를 늘려야 합니다.

기존의 password 칼럼은 20 혹은 18 등의 크기로 되어 있는데

password char(20)

이부분을 41 로 수정해 줍니다.
schema.sql 에서

29 라인의 password char(20) not null,
38 라인의 jumin char(18),
234 라인의 password char(20),
288 라인의 password char(20),


모두 4 곳을 41 로 크기를 수정해 줍니다.
제로보드에서는 주민등록번호도 암호화를 하므로 jumin 칼럼도
수정해 줘야 합니다. 이 외에도 빠진부분이 있는지는 각자 알아서
체크해보시길.

이와 같은 작업은 실제 설치를 시작하게 전에 해줘야 합니다.
수정하지 않고 설치후 에러가 났을 경우에는 생성된 DB 를
삭제해주고 config.php 파일을 삭제한후 다시 install.php 를
실행해서 첨부터 다시 설치를 하시면 됩니다.




[이전 4.0 이하 버전의 password() 함수를 그대로 사용할 경우]

4.0 이전의 password()함수는 mysql 4.1x 에서는 old_password() 라는
함수로 사용할 수 있습니다.
이미 mysql 4.0 이하버전에 제로보드로 많은 회원과 게시판들을 운영하고
있었던 경우 그 데이타를 그대로 살리면서 4.1로 옮길때 적용할 수 있습니다.

우선 제로보드의 php 소스에서 사용된 모든 password() 함수를 old_password() 함수로
고치면 됩니다. 말이 쉽지 작업하기 장난 아닙니다.
일단 어떤 소스에서 password() 함수를 쓰는지 보려면..

[root@haansoft bbs]# pwd
/var/www/html/bbs
[root@haansoft bbs]# grep -R -i -l "password(" ./*
./admin/admin_exec_member.php
./admin/admin_view_member.php
./comment_ok.php
./del_comment_ok.php
./delete_ok.php
./install2_ok.php
./login_check.php
./lostid_search.php
./member_join_ok.php
./member_modify_ok.php
./member_out.php
./view.php
./write_ok.php
[root@haansoft bbs]#

와 같은 파일들이 password() 함수를 씁니다. 구체적인 라인의 내용을 보려면
grep -R -i "password(" ./* 와 같이 -l 옵션을 빼고 grep 명령을
내려보면 됩니다.
위 13 개 파일을 열어서 password("$password") 와 같은 부분을
old_password("$password") 와 같이 수정해 주면 됩니다.

출처 : http://kasua.namoweb.net/zb41pl4/bbs/skin/ggambo7002_board/print.php?id=home&no=102  [새창에서 열기]




오늘 우연하게(?) 봄이 받고 있는 호스팅 업체에 제로보드를 설치해 주다가 수정한 것입니다.

환경은
PHP : 5.x
MySQL : 5.x
이렇습니다.

현상은 다음과 같습니다
admin.php 페이지에서 로그인 id/pw 정상적으로 입력을 했음에도 불구하고 admin-setup.php로 넘어가지 않는 것입니다.

먼저 login_check.php 파일을 열어 봅니다.

session_register("zb_logged_no");
session_register("zb_logged_time");
session_register("zb_logged_ip");
session_register("zb_last_connect_check");
이런 게 있습니다.

혹시나 해서
print_r($_SESSION);
을 했더니 빈값입니다.

우선은 login_check.php 파일부터 손을 잠깐 보겠습니다.
위에 저 부분을

$_SESSION["zb_logged_no"] = $zb_logged_no;
$_SESSION["zb_logged_time"] = $zb_logged_time;
$_SESSION["zb_logged_ip"] = $zb_logged_ip;
$_SESSION["zb_last_connect_check"]= $zb_last_connect_check;
이렇게 바꿉니다.
print_r($_SESSION);
을 하게 되면

Array
(
[zb_last_connect_check] => 0
[zb_logged_no] => 1
[zb_logged_time] => 1229406938
[zb_logged_ip] => xxx.xxx.xxx.xxx <- 이거는 자체 필터링;; 쿨럭
)

이렇게 나오네요.

php.ini에 보면 register_globals라는 항목이 있는데 Off로 되어 있기 때문에 그렇습니다.
우리나라의 경우는 어지간한 호스팅 업체는 On입니다.
보안이나 이런 것들을 위해서도 Off로 사용하시는 게 좋습니다.
자 이제 됐으니 다시 로그인을 해 봅니다.
또 아까와 같은 상황입니다.

세션은 정상적으로 생성이 되었습니다.

혹시나 해서 admin.php 소스를 보면 admin_setup.php 페이지로 넘기는 부분이 보이고
<?
include "lib.php";
$connect=dbConn();
$member=member_info();
if(($member[no]&&$member[is_admin]<3&&$member[is_admin]>=1)||($member[no]&&$member[board_name])) move page("admin_setup.php");
이렇게 되어 있습니다.
if문에 있는 조건에 부합하지 않다는 거겠죠.

이번엔 lib.php를 열어 봅니다.
$member=member_info();
얘를 먼저 봅니다.
member_info()라는 함수를 검색해 보겠습니다.

function member_info() {
global $HTTP_SESSION_VARS, $member_table, $member, $connect;
if(defined("_member_info_included")&&$member[no]) return $member;
define("_member_info_included", true);
if($member[no]) return $member;
if($HTTP_SESSION_VARS["zb_logged_no"]) {
$member=mysql_fetch_array(mysql_query("select * from $member_table where no ='".$HTTP_SESSION_VARS["zb_logged_no"]."'"));
if(!$member[no]) {
unset($member);
$member[level] = 10;
}
} else $member[level] = 10;
return $member;
}
저렇게 나오네요.
위에 또 이상한 게 보입니다.

$HTTP_SESSION_VARS;
$HTTP_SESSION_VARS["zb_logged_no"];

php.ini에서 register_long_arrays가 Off로 되어 있으면 저렇게 긴 녀석도 사용을 할 수가 없습니다.
참고로 PHP6에선 아예 삭제한다고 합니다.
그러니 아예 지금부터 사용을 않는 게 좋겠죠.
http://kr2.php.net/manual/kr/function.session-register.php  [새창에서 열기]
$_SESSION;
$_SESSION["zb_logged_no"];

이렇게 바꿔 주시면 됩니다.
이제 정상적으로 잘 되는지 테스트 해 보시기 바랍니다.



출처: http://www.nyaongnyaong.com/636 [새창에서 열기] [zzin]
]]>
일반 리디 2018-06-10T00:36:23+09:00
구글 주소록 동기화 오류 해결방법 http://reedyfox.com/island.php/fox/1942 구글 주소록 계정과 스마트폰 단말간 동기화가 갑자기 안될 때

스마트폰 환경 설정 > 앱 > 주소록 저장소(또는 연락처 저장소)

위로 들어가셔서 앱을 강제종료 해주시면 됩니다.

"주소록" 앱이 아니라 "주소록 저장소" 라는 앱이 따로 있습니다.
만약 주소록 저장소가 안 보이면 오른쪽 상단 메뉴에서 "시스템 표시"를 선택해주시면 됩니다. ]]>
헤드라인 리디 2018-06-07T15:10:16+09:00
새해에도 복 많이 받으세요^^ http://reedyfox.com/island.php/board/2700 저는 지난 해 사귀던 여성분께서 형사고소를 하시는 바람에 이것저것 마음고생이 심했습니다.
아직 법원 판결을 기다리는 중이긴 합니다만, 곧 끝나겠지요 ^^
좋은 인연을 만난다는게 이렇게 어려운 일인지 몰랐지요. ㅎ
리디님처럼 좋은 아빠가 되고 싶은 소망인데 사는게 참 어렵네요 .
그럼 병신년도 마무리 잘 하시고 좋은 새해 맞이하시길 바랍니다. ^^ ]]>
일반 정낙훈 2016-12-28T23:53:53+09:00
눈보라를 뚫고 00 - 표지 http://reedyfox.com/island.php/later/93 (추가 중) ]]> 일반 리디 2016-01-05T07:24:27+09:00