quartz net 에서는 timestamp값을 0001-01-01 00:00:00 부터 Time Tick (TotalMiliSecond * 100)값을 저장합니다.

오라클에서 Tick값을 그대로 계산해서 보면 2일이 모자라게 나타납니다.

 

아래 쿼리로 확인하면 제대로 보입니다.

 

9/24 시간을 붙힌 이유는 대한민국 Timezone 시간을 덧 붙혀서 계산해야 제대로 보입니다.


select to_date('1970-01-01 00:00:00','YYYY-MM-DD HH24:MI:SS') +
       (
          (LAST_CHECKIN_TIME - 621355968000000000 ) -- (now ticks - UNIX epoch in CLR ticks)
            /10000000 -- CLR ticks per second
        )/60/60/24 + 9/24 -- convert from seconds to days for date addition arithmetic
as date_from_ticks
from QRTZ_SCHEDULER_STATE;

 

 

아래처럼 해도 결과는 동일합니다.

SELECT to_date('0001-01-01 00:00:00','YYYY-MM-DD HH24:MI:SS') +
       (LAST_CHECKIN_TIME / (10000000 * 60 * 60 * 24)) + 2 + (9/24)
as date_from_ticks
from QRTZ_SCHEDULER_STATE;

 

Time Tick값을 DateTime으로 변경

 

참고:

https://stackoverflow.com/questions/20052643/date-math-in-oracle-related-to-net-ticks

quartz에서는 db에 날짜 데이터를 0001년 부터 해서 milisecond 값을 bigint (int64)형태로 저장합니다.

 

mysql에서 직접 쿼리를 통해 이 값을 보기 쉬운 날짜 형태로 보기 위해서는 다소 여러 연산을 거쳐야 확인이 가능합니다.

 

아래 함수로 확인이 가능합니다.

 

 

SELECT CONVERT_TZ( FROM_DAYS(365+(FIRED_TIME / 864000000000))
   + INTERVAL (FIRED_TIME % 864000000000) / 10000000 SECOND , 'GMT', 'Asia/Seoul') AS FIRED  FROM QRTZ_FIRED_TRIGGERS;

 

표준시간대로 저장되기 때문에 정확하게 보려면 현재  TimeZone으로 계산까지 해야 확인이 됩니다.

 

 

참고 #1

https://stackoverflow.com/questions/34695247/mysql-script-to-convert-datetime-ticks-values-to-sql-date/34696553#34696553

 

참고 #2

https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html#function_convert-tz

 

윈도우즈용으로 사용할 bcrypt tool을 찾는데 은근 간단한게 안보여서.. 직접 빌드해서 올립니다.

 

npm 에서 받거나, go 를 쓰거나.. 라이브러리 다운받아서 쓰도록 하는데 되게 번거롭더군요..

 

난 단순히 문자열 변환하는 커맨드라인 툴만 필요했을뿐 인데.... !

 

또 자주 사용하는 C#으로 만들려니, 같이 받는 참조파일은 왜 이렇게 많은지...

 

깔끔하게.. win32 x86용으로  visual studio 2019/C++에서 빌드하였습니다.

라이브러리도 static 으로 빌드하여 exe 파일 하나입니다.

 

사용법)

 

bcrypt [암호화할문자열] -- bcrypt로 암호화합니다.

 

bcrypt [암호] [HASH문자열] 을 입력할경우 유효한지 유효하지 않는지 확인해 줍니다.

 

 

잘 되네요.

 

용량 : 30KB

 

bcrypt.zip
0.02MB

VMware 사용시 아래 오류 발생시 처리할 사항에 대해서 정리해둡니다.

 

"VMware Workstation and Device/Credential Guard are not compatible Error"

 

 

콘솔창에서 gpedit.msc 입력. 그룹정책 편집기로 들어갑니다...

 

컴퓨터 구성 > 관리 템플릿 > 시스템 > Device Guard > 가상화 기반 보안켜기 를 사용안함으로 설정합니다.

 

Hyper-V를 꺼라고 안내하는 사이트도 있던데, 나의 경우엔 체크해놔도 동작하는데는 문제 없었고,

 

다만 콘솔창에서 

 

 

bcdedit /set hypervisorlaunchtype off  

 

 

입력 후 재부팅하면 제대로 동작하였습니다.

 

 

 

 

딸의 유치원 등록을 위해 처음학교로 사이트에 로그인하려는데 키보드 입력이 안되더군요.

키보드 입력이 Shift를 눌렀을때만 입력되는 이상한 현상이었습니다.

 

 

아무래도  nprotect 문제인 듯해서 찾아보았습니다.

 

역시나 관련 글이 있네요.

https://quasarzone.co.kr/bbs/board.php?bo_table=qn_hardware&wr_id=30532

 

윈도우10 환경 키보드 인식 관련내용 안내

안녕하세요~! 앱코 신차장입니다.현재 윈도우10 환경에서 키보드 제품 중 리얼 RGB 제품군의 키보드 인식 문제를 몇몇 소비자 분들께서 제보해 주셨습니다.저희측에 접수된 고객님들 중 문제가 생기셨다는 시스템과 동일한 부품을 이용한 시스템을 조립하여 테스트를 진행하여도 명확한 원인을 확인할 수 없던 중, 가장 유력한 원인으로 파악되는 내용을 발견하여 공지하여…

quasarzone.co.kr

저의 경우 키보드에 꽂힌 USB포트를 변경하여. 원래 키보드, 마우스 USB 포트 자리에 꽂아보았습니다.

그러니까 해결이 되더군요.

 

혹시나 저같은 문제를 겪으신 분들은 참고되시길 바랍니다.

CUDA 10.1 설치 이후 Visual Studio 2019에서 CUDA 10.1 템플릿이 정상적으로 보이지 않아,

다음 방법으로 해결하여 기록을 해둡니다.

 

여기서 템플릿을 CUDA로 검색해도 템플릿이 보이지 않았습니다.

 

Cumminity 버전 기준으로 설명합니다. Community버전이 아닌 Professional이나 Enterprise이면 버전에 맞게 경로를 변경해서 적용하셔야 합니다.

 

1. 아래 경로의 파일들을 모두 복사해서

C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.1\extras\visual_studio_integration\MSBuildExtensions

 

아래 경로로 복사합니다.

C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Microsoft\VC\v160\BuildCustomizations

 

2. 다음 디렉토리에서

C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\IDE\Extensions\NVIDIA

"CUDA 10.1 Wizards\10.1" 디렉토리를 만듭니다.

 

즉 ..

C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\IDE\Extensions\NVIDIA\CUDA 10.1 Wizards\10.1

이렇게 되도록 합니다.

 

3. 아래 경로 파일의 바로가기를 우선 바탕화면에 만들어둡니다. (권한때문에 복사하려는 디렉토리에 바로가기가 만들어지지 않아서 그렇습니다.)

C:\ProgramData\NVIDIA GPU Computing Toolkit\v10.0\extras\visual_studio_integration\CudaProjectVsWizards\2019\extension.vsixmanifest

C:\ProgramData\NVIDIA GPU Computing Toolkit\v10.1\extras\visual_studio_integration\CudaProjectVsWizards\Nvda.Vsip.CudaWizards.dll.pkgdef

 

그리고 바로가기 파일들을 

C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\IDE\Extensions\NVIDIA\CUDA 10.1 Wizards\10.1

디렉토리에 복사를 합니다.

3번 스텝의 결과는 이런 모습이 되어야합니다.

 

4. Visual Studio 개발자 프롬프트를 관리자 권한으로 실행하여 아래 명령어를 실행합니다.

VS 2019으로 검색하면 찾기 쉽습니다.

 

devenv.com /setup /nosetupvstemplates

아래 명령어를 입력합니다.

devenv.com /setup /nosetupvstemplates

 

5. Visual Studio 2019를 시작합니다.

Cuda로 검색해보면 이제 정상적으로 템플릿이 나타납니다.

 

 

참고 LINK

https://docs.nvidia.com/cuda/cuda-installation-guide-microsoft-windows/index.html

https://devtalk.nvidia.com/default/topic/1049858/cuda-setup-and-installation/msvs-2019-and-cuda-10-1-issues/

윈도우 환경에서 임시 테스트 해봄. spark 2.3.0

 

#Parquet 파일에서 data frame 읽기

 

val df = spark.read.parquet("d:\\test.parquet")
df.createOrReplaceTempView("TestView")
var namesdf = spark.sql("SELECT RoundX FROM TestView WHERE Col = 31 AND Row = 40")
namesdf.count()
namesdf.map(attributes => "Name: " + attributes(0)).show()

 

 

#csv 파일에서 data frame 읽기

import org.apache.spark.sql.types._

val schema= StructType(Array(
    StructField("PosX",        FloatType,false),
    StructField("PosY",        FloatType,false),
    StructField("Col",             ShortType,true),
    StructField("Row",         ShortType,true),
    StructField("Id",    IntegerType,true),
    StructField("Label",            StringType,true)))

val df = spark.read.format("csv").option("header", "false").option("delimiter", ",").schema(schema).load("test001.csv")

 

 

#dataframe을 하나의 Parquet 파일로 저장하기. 

df.coalesce(1).write.format("parquet").mode("append").save("d:\\tmp\\test003.parquet")

 

 

 

#dataset을 하나의 Parquet 파일로 저장하기

tiny = spark.sql("SELECT * FROM db.big_table LIMIT 500")
tiny.repartition(1).write.parquet("d:\\tmp\db.tiny_table.parquet")

 

 

#scala script 읽기

spark-shell에서

:load test.scala

D:\Logs\2019\20190803\LOG_A_20190803.txt 형식으로 작성이 된다.

 

<?xml version="1.0" encoding="utf-8" ?>

<log4net>

  <appender name="DebugAppender" type="log4net.Appender.DebugAppender" >

    <layout type="log4net.Layout.PatternLayout">

      <conversionPattern value="%date [%thread] %-5level %logger - %message%newline" />

    </layout>

  </appender>

  <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">   

    <file type="log4net.Util.PatternString" value="D:\Logs\%date{yyyy}\%date{yyyy}%date{MM}%date{dd}\LOG_" />

    <datePattern value="'A_'yyyyMMdd'.txt'" />

    <param name="AppendToFile" value="true" />

    <param name="rollingStyle" value="Date" />

    <staticLogFileName value="false" />

    <layout  type="log4net.Layout.PatternLayout">

      <param name="conversionPattern" value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />

    </layout>

  </appender>

  <root>

    <level value="ALL"/>

    <appender-ref ref="DebugAppender" />

    <appender-ref ref="RollingLogFileAppender" />

  </root>

</log4net>

+ Recent posts