php에서 ldap_bind()를 써서 코딩하려고 했는데,
하...
LDAP가 안 된다 ㅠㅠ ldap_bind만 하면 에러..

 ldap_bind(): Unable to bind to server: Can't contact LDAP server in ...

ldapsearch 유틸로는 잘 되는데 이건 안돌아가서 멘탈붕괴가 시작되던 찰나,
아 설마.. 하고 php를 명령줄에서 실행했더니 결과가 정상..

 $ php ldap_test.php
   true

결국 apache가 실행하면 안되는거였다 ㅠㅠ
이걸 해결하기 위해서는 httpd가 network 접속을 수행할 수 있도록 selinux 설정을 변경해야 한다.

 # setsebool -P httpd_can_network_connect=1 


$ sed 's/asdf/qwer/g' a.txt
qwerqwerqwerqwerqwer...(생략)

위의 커맨드처럼 sed를 파일에 대해 그냥 사용하면 결과가 다시 파일에 써지는 것이 아니라, stdout으로 출력된다 -_-
그래서 "아! 리다이렉션을 사용하면 되겠구나" 하고 다음 커맨드를 입력하면(절대 안됩니다 절대)..

 시도: $ sed 's/asdf/qwer/g' a.txt > a.txt

 결과: $ ls -l
        -rw-rw-r--. 1 kcy1019 kcy1019 0  2월  2 12:12

절대 하면 안됩니다... 절대로..
이럴 땐 그냥 아래처럼 하면 여러모로 안전하고 편리하게 할 수 있습니다.

$ sed -i.bak 's/asdf/qwer/g' a.txt
$ ls -l
-rw-rw-r--. 1 kcy1019 kcy1019 100  2월  2 12:12 a.txt
-rw-rw-r--. 1 kcy1019 kcy1019 100  2월  2 12:12 a.txt.bak

참고: http://stackoverflow.com/questions/5171901/sed-command-find-and-replace-in-file-and-overwrite-file-doesnt-work-it-empties


Fedora의 경우에는 sudo yum install apache 로 apache를 설치했더라도 firewall 설정이 자동으로 업데이트되지는 않기때문에 다음과 같이 수동으로 방화벽 설정을 바꿔주어야 한다:

sudo firewall-cmd --add-service=http
sudo firewall-cmd --permanent --add-service=http

PHP를 쓰다보면 가끔 chmod -R 777 . 을 해도, 심지어 chown -R apache:apache . 를 해도 PHP가 파일을 쓰지 못하는 경우가 있는데(i.e. is_writable(".") returns False), 이럴땐 sudo setenforce 0을 통해 SELinux를 그냥 꺼버려도 쓸 수는 있지만.. 그건 좋은 방법이 아니니 다음과 같이 해당 디렉토리를 SELinux 옵션을 통해 httpd가 읽고 쓸 수 있도록 하면 된다.

sudo chcon -R -h -t httpd_sys_rw_content_t .

mysql이 아무 이유를 말해주지 않고 시작되지 않는다면 하드가 꽉찼는지부터 확인해보자.

df -h /

원래 정규식이 한글을 지원한다면 한글의 범위는 [가-힣](또는 [\uac00-\ud7a3])으로 표현돼야 할 텐데..

VIM에서는 기본적으로 이게 안된다는 것 같다.

그래서 여길 참고해서 https://kldp.org/node/101253 어떻게든 대충 해결하긴 했다.

ASCII의 범위가 \x00 - \xff 니까, 한글은 여기에 속하지 않을 것이다.

따라서 :%s/\([^\x00-\xff]\)[ ]/\1\r/g 와 같이 사용하면 된다.

Q) How to use SIGALRM under 1sec?

A) Use ualarm() instead of alarm().

ualarm(useconds_t useconds, useconds_t interval);

--> useconds(단위: microsecond)만큼 지난 뒤 SIGALRM 발생.
      interval이 0이 아니라면 interval(단위는 같음)마다 SIGALRM 발생.

Reference: http://pubs.opengroup.org/onlinepubs/009695399/functions/ualarm.html

'Computer' 카테고리의 다른 글

Excel Macro - Row Removal  (0) 2014.10.27
[연습]SRM 624 Div1  (0) 2014.09.04
DFS / BFS 한 단계씩 보여주는 미로찾기(Linux용)  (0) 2014.08.02
Difference between .so and .dll files.  (0) 2014.08.01
SIC/XE Machine Simulator  (0) 2014.05.26

친구들 + icpc 신입생들에게 dfs와 bfs를 가르쳐주기 위해서

미로를 만드는 프로그램과 미로를 풀어주는 프로그램을 만들었다.

특히 미로를 풀어주는 프로그램은 알고리즘의 진행단계를 하나씩 보여주도록 만들었다!

쉬운 코딩이지만 오랜만에 유용한 코딩인 것 같아서 포스팅!

코드 : https://github.com/kcy1019/Maze




'Computer' 카테고리의 다른 글

[연습]SRM 624 Div1  (0) 2014.09.04
Signal Alarm을 1초보다 빠르게 사용하고 싶을 때.  (0) 2014.08.02
Difference between .so and .dll files.  (0) 2014.08.01
SIC/XE Machine Simulator  (0) 2014.05.26
서시(서C)  (0) 2014.05.25

Replacement Part of :substitute

Replacement part of the S&R has its own special characters which we are going to use to fix grammar:

#
Meaning
#
Meaning
&
the whole matched pattern
\L
the following characters are made lowercase
\0
the whole matched pattern
\U
the following characters are made uppercase
\1
the matched pattern in the first pair of \(\)
\E
end of \U and \L
\2
the matched pattern in the second pair of \(\)
\e
end of \U and \L
...
...
\r
split line in two at this point
\9
the matched pattern in the ninth pair of \(\)
\l
next character made lowercase
~
the previous substitute string
\u
next character made uppercase

Now the full S&R to correct non-capital words at the beginning of the sentences looks like

s:\([.!?]\)\s\+\([a-z]\):\1  \u\2:g

We have corrected our grammar and as an extra job we replaced variable number of spaces between punctuation and the first letter of the next sentence with exactly two spaces.


http://vimregex.com/#backreferences

(..사실 이건 근본적인 해결책이 되지는 않습니다. Blacklist보다는 Whitelist와 같은 방법을 고려해보세요)

언제부턴가 서버의 SSH가 못써먹겠다 싶을 정도로 느려져서 살펴보았더니

apache2 프로세스가 40개-_-정도 있었다.

간단한 해결책으로는 (sudo) service restart apache2를 하면 되는데, 

이건 임시 해결책일 뿐이고...

netstat으로 접속된 IP들을 보고 해킹시도나 스팸 봇들의 IP를 막으면 된다.

(예를 들면 해외 IP에서의 SSH 접속 시도, 그리고 과도한 트래픽을 주는 IP는 모두 막아야하겠죠)

(sudo) netstat --wide --numeric-hosts --program

(sudo) iptables -A INPUT -s 108.62.154.0/24 -j DROP

(sudo) iptables -A INPUT -s 203.146.82.0/24 -j DROP

(sudo) iptables-save

#24는 앞에서부터 24비트가 매치되는 IP, 그러니까 108.62.154.* 을 모두 DROP하겠다는 뜻.

#108.62.*.*을 막으려면 108.62.0.0/16 이라고 하면 됩니다!