반응형

출처
https://stackoverflow.com/questions/19074552/converting-utc-to-a-different-time-zone-in-php

PHP에서 UTC 시간 대를 다른 시간 대로 변환하기

저는 UTC 시간대를 다른 시간대로 변환하기 위해 아래의 메소드를 사용하였습니다. 하지만 아래의 메소드는 UTC 시간을 리턴하는 것으로 보입니다. 제가 사용한 메소드에 잘못된 것이 무엇인지 충분히 알려주실 수 있으신가요?

static function formatDateMerchantTimeZone($t, $tz) {
   if (isset($t)) {
       return date('Y-m-d H:i:s', strtotime($t , $tz));
   } else {
       return null;
   }
}

$t는 제가 전달한 datetime입니다.
$tz는 America/Los_Angeles와 같은 시간대 입니다.


4개의 답변 중 2개의 답변

많은 사람들이 DateTime 클래스를 인지하지 못하거나 사용하지 않는다는 사실에 놀랐습니다. DateTime 클래스는 이와 같은 작업을 거의 사소하게 만듭니다.

함수에 전달하는 날짜 문자열이 UTC 시간대에 있다고 가정했습니다.

function formatDateMerchantTimeZone($t, $tz)
{
    $date = new \DateTime($t, new \DateTimeZone('UTC'));
    $date->setTimezone(new \DateTimeZone($tz));
    return $date->format('Y-m-d H:i:s');
}

작동 확인


다음을 시도해보세요.

<?php
/**    초 단위로 origin 시간대에서 remote 시간대의 offset을 리턴합니다..
*    @param $remote_tz;
*    @param $origin_tz; null 이면 서버의 현재 시간대가 origin 으로 사용됩니다.
*    @return int;
*/
function get_timezone_offset($remote_tz, $origin_tz = null) {
    if($origin_tz === null) {
        if(!is_string($origin_tz = date_default_timezone_get())) {
            return false; // UTC 타임스탬프가 반환되었습니다 -- 탈출!
        }
    }
    $origin_dtz = new DateTimeZone($origin_tz);
    $remote_dtz = new DateTimeZone($remote_tz);
    $origin_dt = new DateTime("now", $origin_dtz);
    $remote_dt = new DateTime("now", $remote_dtz);
    $offset = $origin_dtz->getOffset($origin_dt) - $remote_dtz->getOffset($remote_dt);
    return $offset;
}
?>
사용예시:
<?php
// 이는 10800을 리턴합니다 (3시간) ...
$offset = get_timezone_offset('America/Los_Angeles','America/New_York');
// 또는 이미 서버 시간이 'America/New_York'로 설정되어 있다면...
$offset = get_timezone_offset('America/Los_Angeles');
// $offset 값을 취해서 당신의 timestamp 값을 조절할 수 있습니다.
$offset_time = time() + $offset;
?>
반응형
반응형

CentOS6에서 gradle을 설치할 일이 있어서 다음 주소들을 참고하여 shell 스크립트를 만들었습니다 :)
참고

Gradle 설치

  • install-gradle-centos.sh
    • root 계정에서 다음 스크립트를 실행하여 설치하였습니다.
# installs to /opt/gradle
# existing versions are not overwritten/deleted
# seamless upgrades/downgrades
# $GRADLE_HOME points to latest *installed* (not released)
gradle_version=3.4.1
wget -N https://services.gradle.org/distributions/gradle-${gradle_version}-all.zip
unzip gradle-${gradle_version}-all.zip -d /opt/gradle
ln -sfn gradle-${gradle_version} /opt/gradle/latest
printf "export GRADLE_HOME=/opt/gradle/latest\nexport PATH=\$PATH:\$GRADLE_HOME/bin" > /etc/profile.d/gradle.sh
. /etc/profile.d/gradle.sh
# check installation
gradle -v
반응형
반응형

출처
https://stackoverflow.com/questions/375427/non-blocking-read-on-a-subprocess-pipe-in-python

python에서 subprocess.PIPE로 non-blocking 읽기

저는 subprocess를 시작하기 위해 을 출력 스트림(표준출력)으로 접속하기 위해 subprocess 모듈을 사용하고 있습니다. 저는 그 출력을 non-blocking으로 읽도록 실행하고 싶습니다. .readline을 non-blocking으로 만들거나 .readline를 실행하기 전에 스트림에 데이터가 있는지 검사하는 방법이 있습니까? 저는 이를 Windows나 Linux에서 최소한의 작업으로 이식하고 싶습니다.
여기는 현재 제가 한 방법입니다. (데이터가 없을 때 .readline는 blocking됩니다.)

p = subprocess.Popen('myprogram.exe', stdout = subprocess.PIPE)
output_str = p.stdout.readline()

29개의 답변 중 1개의 답변만 추려냄

fcntl, select, asyncproc는 이 경우 도움이 되지 않을 것입니다.
운영체제에 관계없이 blocking 없이 스트림을 읽는 신뢰성 있는 방법은 Queue.get_nowait()를 사용하는 것입니다.

import sys
from subprocess import PIPE, Popen
from threading  import Thread

try:
    from queue import Queue, Empty
except ImportError:
    from Queue import Queue, Empty  # python 2.x

ON_POSIX = 'posix' in sys.builtin_module_names

def enqueue_output(out, queue):
    for line in iter(out.readline, b''):
        queue.put(line)
    out.close()

p = Popen(['myprogram.exe'], stdout=PIPE, bufsize=1, close_fds=ON_POSIX)
q = Queue()
t = Thread(target=enqueue_output, args=(p.stdout, q))
t.daemon = True # 쓰레드가 프로그램과 함께 죽습니다.
t.start()

# ... 여기서 다른 것을 합니다

# blocking 없이 한 줄을 읽습니다.
try:  line = q.get_nowait() # or q.get(timeout=.1)
except Empty:
    print('no output yet')
else: # 한 줄을 얻었습니다.
    # ... 그 한 줄로 뭔가를 합니다.
반응형
반응형

출처
https://stackoverflow.com/questions/4824590/propagate-all-arguments-in-a-bash-shell-script

bash 쉘 스크립트에서 모든 인수를 전달

저는 다른 스크립트를 호출하는 애무 간단한 스크립트를 작성하였고 현재 스크립트로부터 실행할 스크립트로 파라미터를 전달할 필요가 있습니다.
예를 들어 제 스크립트는 foo.sh이고 bar.sh를 호출합니다.
foo.sh:

bar $1 $2 $3 $4

각 파라미터를 명시적으로 지정하지 않고 이를 어떻게 할 수 있을까요?


8개의 답변 중 1개의 답변만 추려냄

같은 것을 파라미터로 사용하길 원하신다면 순수한 $@대신에 "$@"를 사용하세요.
확인:

$ cat foo.sh
#!/bin/bash
baz.sh $@

$ cat bar.sh
#!/bin/bash
baz.sh "$@"

$ cat baz.sh
#!/bin/bash
echo Received: $1
echo Received: $2
echo Received: $3
echo Received: $4

$ ./foo.sh first second
Received: first
Received: second
Received:
Received:

$ ./foo.sh "one quoted arg"
Received: one
Received: quoted
Received: arg
Received:

$ ./bar.sh first second
Received: first
Received: second
Received:
Received:

$ ./bar.sh "one quoted arg"
Received: one quoted arg
Received:
Received:
Received:
반응형
반응형

출처
https://stackoverflow.com/questions/37791685/what-is-the-use-case-for-start-awaittermination-and-stop-with-regard-to-sp

스파크 스트리밍에 관해 start(), awaitTermination(), stop()의 사용 사례는 무엇입니까?

저는 스파크 스트리밍 초보입니다. 저는 터미널에서 데이터를 추출하여 HDFS로 불러오는 하나의 응용프로그램을 개발하고 있습니다. 인터넷에서 찾아 보았지만 스트리밍 응용프로그램을 멈추는 방법을 이해할 수 없었습니다.

또한 sc.awaittermination()과 sc.stop()의 사용 사례를 저에게 설명해 주실 수 있으신가요?

감사합니다.


2개의 답변 중 1개의 답변만 추려냄

streamingContext.awaitTermination() --> 사용자로부터 종료 신호를 기다립니다. 사용자로부터 신호를 받을 때(예시 CTRL+c 또는 SIGTERM) 스트리밍 context는 멈출 것입니다. 이는 java의 shutdownhook 종류입니다.

streamingContext.stop() --> 스트리밍 context를 바로 멈춥니다. 스파크 context에 관해 스트리밍 context에 말할 수 있습니다. 만약 스파크 context가 아니고 스트리밍 context만 멈추기를 원한다면 streamingContext.stop(false)를 호출할 수 있습니다.

반응형
반응형

CentOS6 Docker설치

Docker 1.7.1 Download

centos ~]$ curl -O -sSL https://get.docker.com/rpm/1.7.1/centos-6/RPMS/x86_64/docker-engine-1.7.1-1.el6.x86_64.rpm
centos ~]$ sudo yum -y localinstall --nogpgcheck docker-engine-1.7.1-1.el6.x86_64.rpm
centos ~]$ sudo service docker start

일반 계정(centos) 유저로 실행

centos ~]$ sudo usermod -aG docker centos
centos ~]$ sudo service docker restart

https://github.com/SDRLurker/TIL/blob/master/docker/centos6_install.md

반응형
반응형

출처 : https://stackoverflow.com/Questions/4374455/how-to-set-sys-stdout-encoding-in-python-3

Python3에서 sys.stdout 인코딩 하는 방법

Python 2에서 기본 출력 인코딩으로 설정하는 것은 잘 알려진 구문입니다.

sys.stdout = codecs.getwriter("utf-8")(sys.stdout)    

이는 UTF-8로 출력을 인코딩하여 codec writer에서 sys.stdout를 포장(wrap)합니다.

하지만, 이 기술은 Python 3 에서는 작동하지 않습니다. 그 이유는 sys.stdout.write()str를 예상하는데 인코딩의 결과는 bytes이고 codecs가 원래 sys.stdout로 인코딩된 바이트배열을 출력하려고 할 때 오류가 발생합니다.

Python 3에서 이를 할 수 있는 올바른 방법은 무엇입니까?


7개의 답변 중 2개의 답변만 추려냄.

Python 3.7부터 당신은 reconfigure()로 표준 스트림의 인코딩을 변경할 수 있습니다.

sys.stdout.reconfigure(encoding='utf-8')

당신은 errors 파라미터를 추가하여 인코딩 오류가 다뤄질 수 있도록 수정할 수 있습니다.


Python 3.1에 io.TextIOBase.detach()가 추가되었습니다. 다음은 sys.stdout에 대한 문서 내용입니다.

표준 스트림은 기본으로 text 모드입니다. 이 스트림에 이진(binary) 데이터를 쓰거나 읽기 위해 기본 바이너리 버퍼를 사용합니다. 예를 들어 stdout에 바이트 배열을 쓰기 위해 sys.stdout.buffer.write(b'abc')를 사용합니다. io.TextIOBase.detach()를 사용함으로써, 스트림은 기본으로 바이너리가 될 수 있습니다. 이 함수는 바이너리로 stdinstdout을 설정합니다.

def make_streams_binary():
    sys.stdin = sys.stdin.detach()
    sys.stdout = sys.stdout.detach()

그리하여, Python 3.1 이상에서 대응되는 구문은 다음과 같습니다.

sys.stdout = codecs.getwriter("utf-8")(sys.stdout.detach())
반응형
반응형

출처

https://stackoverflow.com/questions/7749530/what-is-the-difference-between-and-in-scala/7749570

스칼라에서 \=:=의 차이점은 무엇입니까?

스칼라에서 \=:=의 차이점은 무엇입니까?

저는 "스칼라 :=(콜론 이퀄)"에 관해 광범위하게 구글링 해보았지만 결정적인 어떤 것도 찾지 못했습니다.


4개의 답변 중 1개의 답변

스칼라에서 =는 실제 대입 연산자입니다. 몇 가지 특정 작업을 수행하지만 다음과 같은 대부분의 경우 제어할(다시 정의할) 권한이 없습니다.

  • 생성할 때 val 또는 var 형태의 값을 제공

  • var 의 값을 변경

  • 클래스에서 필드의 값을 변경

  • type alias를 생성

  • 아마 다른 것들

:=는 내장된(build-in) 연산이 아닙니다. 누구든 원하는 대로 의미를 정의하고 오버로딩할 수 있습니다. :=를 사용하기 좋아하는 이유는 매우 대입 연산자처럼 보이고 다른 언어에서 대입 연산자로 사용하고 있기 때문입니다.

그래서 당신이 사용하고 있는 라이브러리에서 :=가 뜻하는 것을 찾아보는 시도가 필요합니다. := 이름의 메소드를 Scaladocs(만약 있다면)를 통해 살펴보시는 것을 권유합니다.

반응형
반응형

tf.placeholder와 tf.Variable의 차이점은 무엇입니까?

저는 텐서플로우 뉴비입니다. 저는 tf.placeholdertf.Variable의 차이점이 해깔립니다. 제 관점에서 tf.placeholder는 입력 데이터를 위해 사용되고 tf.Variable은 데이터의 상태를 저장하는 데 사용됩니다. 이것이 제가 알고 있는 것의 전부입니다.

이 둘의 차이점을 더 자세하게 설명해 주실 분이 있으신가요? 특별히 언제 tf.placeholder를 사용하고 또한 언제 tf.Variable을 사용하나요?


14개의 답변 중 1 개의 답변만 추려냄.

간단히, 당신의 모델에서 가중치(W, weights)와 편향(B, Bias) 처럼 학습 가능한 변수를 위해 tf.Variable를 사용합니다.

weights = tf.Variable(
    tf.truncated_normal([IMAGE_PIXELS, hidden1_units],
                    stddev=1.0 / math.sqrt(float(IMAGE_PIXELS))), name='weights')

biases = tf.Variable(tf.zeros([hidden1_units]), name='biases')

tf.placeholder는 실제 학습 예시를 공급(feed)하는 데 사용됩니다.

images_placeholder = tf.placeholder(tf.float32, shape=(batch_size, IMAGE_PIXELS))
labels_placeholder = tf.placeholder(tf.int32, shape=(batch_size))

다음은 학습되는 동안 학습 예시를 공급(feed)하는 방법입니다.

for step in xrange(FLAGS.max_steps):
    feed_dict = {
       images_placeholder: images_feed,
       labels_placeholder: labels_feed,
     }
    _, loss_value = sess.run([train_op, loss], feed_dict=feed_dict)

당신의 tf.variables는 이 학습의 결과로서 (수정되고) 학습될 것입니다.

더 자세한 내용은 https://www.tensorflow.org/versions/r0.7/tutorials/mnist/tf/index.html에서 확인하세요. (예시는 웹 페이지에서 가져왔습니다.)

반응형
반응형

출처

https://serverfault.com/questions/59140/how-do-diff-over-ssh


ssh로 원격 diff 하는 방법

ssh로 접속만이 가능한 원격 머신에 있는 파일이나 폴더를 diff를 어떻게 할 수 있을까요?

------

14개의 답변 중 1 개의 답변만 추려냄.

Bash의 process substitution으로 당신은 원격 diff를 하실 수 있습니다.

diff foo <(ssh myServer 'cat foo')

또는 둘다 원격 서버라면 다음처럼 가능합니다.

diff <(ssh myServer1 'cat foo') <(ssh myServer2 'cat foo')


반응형

+ Recent posts