안드로이드 스튜디오 설치

0. 서론

컴터 포맷하면서 안드로이드 스튜디오를 새로 설치해야된다. 아이폰을 한 번도 써보지는 않았지만, 내가 원하는 기능의 어플을 바로바로 만들어서 사용할 수 있다는 점에서 안드로이드를 사용하고 있다.

1. 안드로이드 스튜디오 다운로드 + 설치

https://developer.android.com/studio

가운데 떡하니 박혀있는 다운로드 버튼을 눌러서 850MB 정도 되는 파일을 다운로드 받아보자.

이후 Next 만 누르면서 진행해도 되는데, 만약 내가 안드로이드 폰을 가지고 있고, 컴퓨터를 핸드폰에 연결해서 앱을 테스트 할까면 Virtual Device는 설치할 필요가 없다.

버츄얼 디바이스는 느려서 별로 손이 안감. 단 한번도 사용해본 적이 없어서 이번에는 설치를 안한다.

그 이후 기본 설정을 유지하고 Next만 쭉쭉 누르면 설치가 끝난다.

2. SDK 설치

왠지는 모르겠는데, 9.0을 누르고 OK를 누르니까 설치가 안된다. Edit을 눌러서 뭔가 설치를 진행해보자.

그게 설치가 끝나고 ok를 누르니까 제대로 설치가 진행된다.

내 브라우저로 서버 인터넷 사용하기

데이터셋을 유튜브에서 모으다 보면, 다음과 같은 에러에 직면할 때가 있다.

ERROR: Unable to download webpage: HTTP Error 429: Too Many Requests (caused by ); please report this issue on https://yt-dl.org/bug . Make sure you are using the latest version; see  https://yt-dl.org/update  on how to update. Be sure to call youtube-dl with the --verbose flag and include its complete output. 

유튜브가 해당 서버 ip를 밴먹인건데, 다음과 같이 해결할 수 있다.

  1. ssh -D 9999 user@remoteserver을 통해서 서버 접속
  2. 파폭 설정 최하단 네트워크 설정에 가서 SOCKS 프록시 설정
이렇게 설정

3. 그리고 유튜브에 들어가서 아무 비디오나 누르면 다음과 같은 캡챠를 부탁한다.

4. 캡챠 해결후 쿠키 다운로드. cookies-txt 플러그인을 사용해서 cookies.txt를 다운 받은 뒤 서버에 올리자.

5. 이후 youtube-dl 을 사용시 –cookie cookies.txt를 붙혀주면 댐.

6. 참고로 다운 받을 때, 15초 정도의 텀을 두고 youtube-dl을 써주면 밴이 자주 안 걸린다.

7. 물론 이리 해도 다시 밴당함. 그냥 여러 ip 섞어 쓰자.

Miniconda 설치후 Pycharm과 연동

  1. 미니콘다 다운
    https://docs.conda.io/en/latest/miniconda.html
    에 들어가서
    자신에 맞는 버전, 아마도 Python 3.7 Miniconda3 Windows 64-bit를 눌러주자.
  2. 미니콘다 설치.
    설치파일을 실행한 뒤 끝까지 Next만 눌러주자. 중간에 설정 바꿀 필요는 없다
  3. 파이참 다운
    https://www.jetbrains.com/pycharm/download/#section=windows
    에 들어가서 Community를 다운받아주자.
  4. 파이참 설치
    설치파일을 실행시킨 뒤, Next만 눌러주자
  5. 설치가 된 뒤, 실행하자. 첫 실행시 Import setting이 뜨는 데, 파이참 처음이면 그냥 Do not import settings을 클릭하면 된다.

이제 여기서 configure을 누른 뒤 setting을 눌러주자.


Project Interpretor을 들어가서 오른쪽 위에 설정버튼을 누르고 add를 눌러주자

그리고 ok를 누르면 끝

Jetpack Carousel 수정

ImageMagick 설치

제일 먼저 imagemagick을 설치해주자. WP는 기본적으로 GD library를 사용하는데, 이 경우 thumbnail에서 metadata가 사라진다. 우리는 모든 이미지에 대해서 metadata가 필요하다. 워드프레스는 metadata를 가져올 때, 원본 이미지에서 가져오는데, 모든 metadata를 가져오지 않는다. XMP의 경우 사진 파일이 클 수 록 가져오는 속도가 느리기 때문에, thumbnail에 XMP를 유지 시킨 뒤, thumbnail에서 XMP를 가져올 것이다.

sudo apt-get install php-imagick
sudo apt install imagemagick
sudo service apache2 restart

이후 ImageMagick을 활성화 시키는 플러그인을 설치해 주자. 이 플러그인은 activate만 하면 자동으로 활성화 된다. 다만 이 플러그인은 새로 업로드 한 사진에만 적용된다.

Photon 해제

Photon은 XMP metadata를 지워버리므로 해제 시켜주자.

플러그인 파일 수정

환경설정 -> edit plugin으로 들어가서
jetpack/modules/carousel/jetpack-carousel.php을 선택하자

그 다음 링크를 참조해서,

function getXmpData($filename, $chunkSize)
{
    if (!is_int($chunkSize)) {
        throw new RuntimeException('Expected integer value for argument #2 (chunkSize)');
    }

    if ($chunkSize < 12) {
        throw new RuntimeException('Chunk size cannot be less than 12 argument #2 (chunkSize)');
    }

    if (($file_pointer = fopen($filename, 'r')) === FALSE) {
        throw new RuntimeException('Could not open file for reading');
    }

    $startTag = '<x:xmpmeta';
    $endTag = '</x:xmpmeta>';
    $buffer = NULL;
    $hasXmp = FALSE;

    while (($chunk = fread($file_pointer, $chunkSize)) !== FALSE) {

        if ($chunk === "") {
            break;
        }

        $buffer .= $chunk;
        $startPosition = strpos($buffer, $startTag);
        $endPosition = strpos($buffer, $endTag);

        if ($startPosition !== FALSE && $endPosition !== FALSE) {
            $buffer = substr($buffer, $startPosition, $endPosition - $startPosition + 12);
            $hasXmp = TRUE;
            break;
        } elseif ($startPosition !== FALSE) {
            $buffer = substr($buffer, $startPosition);
            $hasXmp = TRUE;
        } elseif (strlen($buffer) > (strlen($startTag) * 2)) {
            $buffer = substr($buffer, strlen($startTag));
        }
    }

    fclose($file_pointer);
    return ($hasXmp) ? $buffer : NULL;
}

jetpack/modules/carousel/jetpack-carousel.php <?php 바로 아래에 추가해 주자.

그 다음 대에충 318번 째 줄쯤에

'FocalLengthIn35mmFilm'     => __( 'Focal Length In 35mm', 'jetpack'),
'auxLens'                   => __( 'Lens Model', 'jetpack' ),
'AnalogExifFilm'            => __( 'Film Type', 'jetpack' ),

위 줄을 넣어주고 대에충 아래쯤에 줄을 아래로 수정해 주자.

'meta_data'      => array( 'camera', 'aperture', 'shutter_speed', 'focal_length', 'copyright', 'iso', 'FocalLengthIn35mmFilm', 'auxLens', 'AnalogExifFilm'),

그리고 512번째 줄쯤에 아래 줄을 넣어주자.

        $thumb_file       = wp_get_attachment_image_src( $attachment_id );
        $thumb_file       = isset( $thumb_file[0] ) ? $thumb_file[0] : wp_get_attachment_url( $attachment_id );
        $xmlstring = getXmpData($thumb_file);
        
        // echo $xmlstring;
        if ($xmlstring){
            $xmlstring = str_replace(":","",$xmlstring);
            $xml = simplexml_load_string($xmlstring, "SimpleXMLElement", LIBXML_NOCDATA);
            $json = json_encode($xml);
            $xmpdata = json_decode($json,TRUE);
            foreach ($xmpdata['rdfRDF']['rdfDescription']['@attributes'] as $key=>$item){
                $img_meta[$key] = $item;
            }

        }

마지막으로 대충 576 쯤에,

$attr['data-image-title']       = esc_attr( htmlspecialchars( $attachment_desc ) );

결과 =

php 7.2로 업그레이드

sudo apt-get install software-properties-common
sudo add-apt-repository ppa:ondrej/php
sudo apt update

sudo apt install php7.2 libapache2-mod-php7.2 php7.2-common php7.2-mysql php7.2-gmp php7.2-curl php7.2-intl php7.2-mbstring php7.2-xmlrpc php7.2-gd php7.2-xml php7.2-cli php7.2-zip

sudo cp /etc/php/7.0/apache2/php.ini /etc/php/7.2/apache2/php.ini
sudo systemctl restart apache2.service
sudo a2enmod php7.2
sudo a2dismod php7.1
sudo systemctl restart apache2.service

Linode IP 변경

Linode의 경우 각각의 Linode에 대해서 IP를 바로 변경할 수 는 없게 되어 있지만, 가지고 있는 Linode와 IP를 Swap할 수는 있게 되어 있다.

  1. 바꾸고 싶은 Linode와 같은 서버에 새로운 Linode 생성
  2. 설정 -> networking -> ip transfer을 통해서 ip 변경
  3. 새로 만든 linode 삭제
  4. Reboot
  5. (선택) domain A/AAAA record 변경
  6. 하루만 기다리기

Linode에 VPN 서버 설치하기

여태까지 OpenVPN을 사용했으나, OpenVPN은 사실 그리 안전하지는 않은게, 각 end에서 내가 VPN을 사용하는지 않하는지를 알기가 쉽다고 들었다. 다만 주 사용 용도 (학교에서 토렌트 돌리기)에는 크게 문제가 없었으나, 중국여행중 VPN을 사용하다가 결국에는, 중국에서 이 블로그 ip가 막혔다. 따라서 새로운 VPN 서버가 필요해졌는데, 이번에는 OpenVPN이 아닌. 구글 모기업 alphabet에서 개발하는 Outline을 사용해보기로 했다.

Outline의 가장 큰 특징은 쉽게 설치할 수 있다는 점 인데, 따라서, 개발자는 쉽게 삭제하고 다시 설치 할 수 있기 때문에, 중국에서 IP가 막혀도 그냥 바로 다른 VPS를 만들어서 쓰라고 추천하고 있다.

일단 Outline에 들어가서 manager을 다운받자. 이건 서버에다가 다운 받는게 아니라, 지금 이 블로그 포스트를 보고있는 노트북/컴퓨터에 다운받으면 된다. 설치하고 나면 첫 화면이 아래와 같은데, 내 경우 Linode이기 때문에 오른쪽 아래 ‘SET UP’을 클릭하면 된다.

SET UP을 클릭하면 다음과 같은 화면이 뜬다

하란대로 첫 박스의 커맨드를 복사한 뒤 서버에서 실행시켜 주면, 얼마 뒤 결과가 뜬다. 다만 이 경우, 랜덤 port를 사용하는데, 만약 특정 port로 VPN을 쓰고 싶다면 이 글을 참고하자 ( https://github.com/Jigsaw-Code/outline-server/pull/415 ). 이는 중국이나 이란 같은 경우 SSL 암호화는 443포트만 허용하고, 다른 포트에서 SSL 암호화가 된 패킷이 전송되는 걸 확인하면 VPN으로 간주하고 IP밴을 사용한다고 추정되어 필요하다.

아무튼 커맨드를 실행시키면 결과가 뜨는데, 그 결과를 아래 박스에 붙혀넣고, DONE을 클릭해주자. 좀 기다려 보면 안된다고 에러가 뜬다. 이는 포트가 열려있지 않아서 그렇다. 서버에서 나온 결과를 보면 어떤 포트를 열어야 되는지 알려준다.

sudo ufw allow XXXXX
sudo ufw allow XXXXX

XXXXX를 포트 번호로 바꾸고, 위 커맨드를 입력하면, 포트가 열린다. 이건 Ubuntu의 경우고, 다른 os의 경우는 다르기 때문에 알아서 찾아보자.

잘 된다. 다만 해보니까 중국에서 또 안된다. 이유는 모르겠다. 내 블로그는 HTTPS 암호화가 되어있어도 잘 되는데, 다른 서버에서 안되는걸 보면 도메인이 없어서 그럴 수도 있다고 추정된다. 도메인 없이 IP주소를 직접 입력하고 암호화 통신을 해서? 더 많은 시행착오를 해야 할 것 같은데, 당장은 시간이 없어서 못하겠다. 그냥 해외 심카드를 사서 돌리면 돈 조금만 더 내고 편하게 쓸 수 있을 것 같은데.. Google Fi를 쓰고 싶다.

워드프레스 get_the_post_thumbnail 문제

이 블로그는 사진도 겸해서 올리고 있다. WordPress의 Blask 를 사용하고 있는데, 그 이유는 portfolio라는 방법으로 사진을 올리면 자동으로 여기에 띄워주기 때문이다. 다만 많은 사진 블로그/갤러리들은 nested를 통해서 올리는데, 이게 편하기 때문이다. 예를 들면

./여행
./여행/프랑스
./여행/독일
./여행/포르투갈/리스본
./여행/포르투갈/포르투

이런식으로 블로그를 정리한다면 더 편할 테니까. Blask는 이를 지원하지는 않지만 대신 portfolio의 type/tag를 각 게시글 마다 설정한 뒤, 워드프레스 메뉴 설정에서 각각의 type/tag를 추가해주면 된다.

Continue reading “워드프레스 get_the_post_thumbnail 문제”

letsencrypt renewal

지금 블로그의 ssl 인증서의 문제가 생겼다. 이메일이 와서 알았는데,


Hello,
 
Action may be required to prevent your Let’s Encrypt certificate renewals
from breaking.
 
If you already received a similar e-mail, this one contains updated
information.
 
Your Let’s Encrypt client used ACME TLS-SNI-01 domain validation to issue
a certificate in the past 60 days. Below is a list of names and IP
addresses validated (max of one per account):

즉 내 블로그의 인증방식이 더 이상 유효하지 않으니 새로운 방법으로 바꾸라는 소리다. 나는 python-certbot-apache 을 쓰고 있기 때문에 이를 먼저 업데이트 해주자.

sudo apt-get update
sudo apt-get install python-certbot-apache

여기저기서 읽어본 결과 certbot만 업데이트 하면 이는 자동으로 해결 된다고 한다. dry-run을 돌려서 확인해보자

sudo certbot renew --dry-run

이 명령어가 제대로 돌아간다면, 문제가 없다는 뜻이다. 확실하진 않으니 3월달에 다시 확인해봐야겠다.

–2/21–

자동연장 된거 보면 제대로 되는듯 하다

–2022/1/18–

또 된다.