5월, 2014의 게시물 표시

heroku에서 app 이름 변경시 수정사항

heroku 사이트에 이름을 변경시 local에서 처음에 생성한 이름을 그대로 가지고 있어 git push할때 인식을 못한다. 수정하는 방법은 헤로쿠 사이트에서 확인을 해보니 아래와 같이 수정하면 된다. git remote rm heroku heroku git:remote -a 수정한app이름 Updating Git remotes If you are using the CLI to rename an app from inside the Git checkout directory, your remote will be updated automatically. If you rename from the website or have other checkouts, such as those belonging to other developers, these will need to be updated manually: $ git remote rm heroku $ heroku git:remote -a newname Replace “newname” with the new name of the app, as specified in the rename command.

django에 PostgreSQL 설치하기

이미지
sqlite3을 사용하다가 웹서비스에 올리기 위해 찾던중 PostgreSQL을 지원한다는 것을 보고 설치하기로 하였다. PostgreSQL을 사용하기 위해서는 아래의 psycopg가 필요하다. 아래의 링크에서 windows x86버전의 파이썬버전에 맞게 설치한다. psycopg 는 PostgreSQL을 파이썬에서 사용하기 위한 DB 어댑터로 장고 프로젝트의 셋팅에 사용한다. http://www.stickpeople.com/projects/python/win-psycopg/ exe 파일을 다운받아 설치를 한다. 아래 사이트에서 postgresql을 다운로드 받는다. Windows 를 클릭하고 다운로드를 한다. postgresql-9.3.4-3-windows.exe 파일을 다운 후 설치를 한다. http://www.postgresql.org/download/ 설치는 다음만 누르면 기본으로 설치된다. 이제 장고 프로젝트의 설정을 변경하자. settings.py 파일을 열어 아래와 같이 추가하자. sqllite 구문은 주석으로 막고 아래와 같이 DB backend로 postgresql_psycopg2 추가하였다. 그리고 NAME은 데이터베이스 이름, DB 아이디와, 패스워드를 추가한다. DATABASES = { ##    'default': { ##        'ENGINE': 'django.db.backends.sqlite3', ##        'NAME': os.path.join(BASE_DIR, 'db.sqlite3'), ##    }     'default': {         'ENGINE': 'django.db.backends.postgresql_psycopg2',         'NAME': 'blog',         'USER'

django를 apache에 구동하기

아파치 사이트에 접속한다. http://httpd.apache.org/ 아파치는 2.2 버전대를 다운로드 하였다. 아래 링크로 접속하면 바로 windows 용을 다운로드 하는 페이지로 이동한다. http://mirror.apache-kr.org//httpd/binaries/win32/ SSL은 필요 없어 기본으로 아래의 파일을 다운로드 받았다. httpd-2.2.25-win32-x86-no_ssl.msi 설치는 간단하여 생략. exe 파일을 실행하고 다음버튼만 누르면 기본 셋팅된다. 장고를 구동하기 위해서는 mod_wsgi를 다운받아야한다. mod_wsgi-win32-ap22py27-3.3 로 검색을 하거나 아래 링크에서 다운을 받는다. https://code.google.com/p/modwsgi/downloads/detail?name=mod_wsgi-win32-ap22py27-3.3.so mod_wsgi-win32-ap22py27-3.3.so 파일이 생성되는데 파일의 이름을 mod_wsgi.so로 수정한다. 아파치가 설치되어있는 기본폴더에 modules에 mod_wsgi.so 파일을 복사한다. C:\Program Files\Apache Software Foundation\Apache2.2\modules C:\Program Files\Apache Software Foundation\Apache2.2\conf 폴더에 있는 httpd.conf 파일을 열어 마지막에 아래와 같이 추가한다. 아래와 같이 모듈을 로드하면 장고를 실행해준다. ## 장고 추가 설치 경로 #WSGI Setting for Django LoadModule wsgi_module modules/mod_wsgi.so WSGIScriptAlias / d:/django_blog/apache/django.wsgi <Directory "d:/django_blog/apache"> Order deny,allow Allow

django 에 static file 경로 위치

django에서 runserver로 수행할때는 static file 경로를 잘 인식하였는데 apache로 서버에 올리니 static 파일 경로를 제대로 찾지 못해 찾던중 아래와 같이 해결되어 올립니다. django에서 collectstatic 등 여러가지 방법으로 해도 url을 제대로 못찾았는데 아무래도 apache 에서 httpd.conf 파일에서 static 으로 url이 시작되면 아래의 경로로 찾게 alias 구문을 넣으니 해결이 되었다. 아래 빨간색 참조. setting.py 에서 수정 STATIC_URL = '/static/' STATIC_ROOT = '' STATICFILES_DIRS = (     'D:/django_blog/static', ) # List of finder classes that know how to find static files in # various locations. STATICFILES_FINDERS = (     'django.contrib.staticfiles.finders.FileSystemFinder',     'django.contrib.staticfiles.finders.AppDirectoriesFinder', ) apache에서 httpd.conf 파일수정 ## 장고 추가 설치 경로 #WSGI Setting for Django LoadModule wsgi_module modules/mod_wsgi.so WSGIScriptAlias / d:/django_blog/apache/django.wsgi <Directory "d:/django_blog/apache"> Order deny,allow Allow from all </Directory> Alias /robots.txt d:/django_blog/apache/static/robots.

MS SQL 에서 AES 256 암호키 생성시

삭제는 생성과 반대로 drop SYMMETRIC KEY <symmetrickey_id> drop CERTIFICATE <certificate_id> drop MASTER KEY 암호용키생성 IF NOT EXISTS (SELECT * FROM sys.symmetric_keys WHERE symmetric_key_id = <idvalue>)     CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'keyvalue....' GO 인증서 생성 CREATE CERTIFICATE <certificate_id> WITH SUBJECT = 'subject........'; GO 대칭키를 인증서로 암호 CREATE SYMMETRIC KEY <symmetrickey_id> WITH ALGORITHM = AES_256,      KEY_SOURCE = 'ENC_KEY',      IDENTITY_VALUE = 'ENC_VALUE_Key' ENCRYPTION BY CERTIFICATE <certificate_id>; GO 키 사용권한 부여 USE databasename; GRANT CONTROL ON SYMMETRIC KEY::<symmetrickey_id> TO usersqlid; USE databasename; GRANT CONTROL ON CERTIFICATE ::<certificate_id> TO usersqlid;

MS SQL] DB Restore 시 SQL 로그인 계정과 DB계정 매핑안될 때

이미지
MS SQL 에서 DB Restore시 SQL 계정과 DB에 생성되어 있는 계정이 매핑되지 않는 경우가 있는데 이런 경우 사용하는 명령입니다. 아래와 같이 Auto Fix 옵션과 로그인 계정정보를 넣으면 msdb에서 정보를 수정해 준다고 합니다. EXEC sp_change_users_login 'Auto_Fix', ' sql_login_id ' MSDN  참고 Syntax   sp_change_users_login  [  @Action   =  ]  ' action '     [  ,  [  @UserNamePattern   =  ]  ' user '  ]     [  ,  [  @LoginName   =  ]  ' login '  ]         [  ,  [  @Password   =  ]  ' password '  ] Arguments [  @Action   =  ]  ' action ' Describes the action to be performed by the procedure.  action  is  varchar(10) .  action  can have one of the following values. Value Description Auto_Fix Links a user entry in the  sys.database_principals  system catalog view in the current database to a SQL Server login of the same name. If a login with the same name does not exist, one will be created. Examine the result from the Auto_Fix  statement to confirm that the correct link is in fact

[VB] Sheridan 3D Control이 로드 되지 않을때

Visual Basic 6.0을 설치 후, Sheridan 3D Control을 사용하는데 (Threed.ocx) 프로젝트에서 로딩시 컨트롤은 로딩이 되나 컨트롤을 붙이려고 하면 디자인 환경에서 사용권한이 없다고 나올 때가 있습니다. 인터넷을 찾다보니 다음과 같이 해결 방법이 있네요. Visual Studio 6.0 Enterprise edition 3번 Disk에 Threed.ocx가 있습니다. 여기의 파일을 복사해서 windows\system32폴더에 복사해 넣으신 후 VBctrls.reg 파일을 실행하여 컨트롤을 등록하면 사용가능해집니다. Vbctrls.reg 파일 내용 입니다. 첨부 파일을 다운받아서 실행하시면 됩니다. ==================================================================== REGEDIT HKEY_CLASSES_ROOT\Licenses = Licensing: Copying the keys may be a violation of established copyrights. // The 16 bit and 32-bit OCX Professional license follows: HKEY_CLASSES_ROOT\Licenses\DB4C0D00-400B-101B-A3C9-08002B2F49FB = mgkgtgnnmnmninigthkgogggvmkhinjggnvm                              // The 32 bit OCX Professional license follows: HKEY_CLASSES_ROOT\Licenses\7BC20EDC-4A42-101B-A3C9-08002B2F49FB = gifblihbhiiihbciocfbkifbqcfcdiebbiqh ====================================================================

VB] For 문 사용시 주의사항

Visual Basic 6.0 기준으로 작성을 하였습니다. 기본적으로 For 문은 초기값부터 To 값까지 증감값만큼 건너띄게 되어 있는데 프로그램을 하다가 미쳐 생각하지 못했던 부분이 에러로 발생하여 팁으로 올립니다. VB For 문 For iProjCnt =1 To .MaxRows 'insert row .MaxRows = .MaxRows + 1 iProjCnt = iProjCnt + 1 Next 위와 같이 프로그램이 구성되어 있고 To 에 Row값이 내부 로직에 의해서 변하게 됩니다. 그럼 이 For 문이 몇번을 수행하게 될까요? 만약 처음에 1~100까지 출력을 하다가 중간에 To값이 120 이 되었으면 120까지 진행을 할까요? For문은 처음에 설정된 값으로만 수행합니다. 즉, MaxRows 값은 변경되어도 처음 값인 100까지만 수행이 됩니다. 아시는 분들도 있겠지만, 아무 생각없이 For문을 쓰다보니 이런 현상이 발생하네요 결국 While문으로 아래와 같이 수정하였습니다. Wile이나 Do while 등은 매번 조건을 체크하기 때문에 정상적으로 수행 되었습니다. iProjCnt = 1 While iProjCnt <= .MaxRows 'insert row .MaxRows = .MaxRows + 1 iProjCnt = iProjCnt + 1 Wend To값이 변경되는 경우는 For문을 사용할 수 없네요.

VB-OpenConnection 연결 조회시 멍한 현상 조치방법

아직도 Visual Basic을 쓰는 곳이 있냐고 한다면 패스~ 제가 운영하는 사이트에서는 아직도 VB6.0을 사용하고 있습니다. 이번에 MS SQL 2008로 업그레이드를 하면서 몇가지 이상한 점이 발견되어 올립니다. 그 중에서도 SQL 2000 서버에서는 잘 운영되던 프로그램이 일부 느려지거나 조회시 멍한 현상이 발견되었는데요. 저희가 사용하고 있는 접속 문장은 아래와 같습니다. rdoEngine.rdoDefaultCursorDriver = 1 Set gEN = rdoEnvironments(0) lstrDBName = "" lstrID = "" lstrPassword = "" lstrConn = "uid=" & lstrID & ";pwd=" & lstrPassword & ";driver={SQL Server};server=" & _ RTrim(ServerName) & ";database=" & lstrDBName & "; DSN=''; " Set gCN = gEN.OpenConnection(dsName:=RTrim(ServerName), _ Prompt:=rdDriverNoPrompt, _ Connect:=lstrConn) 위 문장으로 접속하여 쿼리 수행시 일부 쿼리가 멍한 현상이 발견되었는데, 데이터베이스에서 조회시에는 조회가 빨리되는데 프로그램에서만 느리게 조회가 됩니다. 그래서 다른 응용프로그램 소스로 확인을 해보니 다른 응용프로그램에서는 빨리 조회가 되었습니다. OpenResultSet 명령도 변경해보고 하였는데도 문제가 해결되지 않았는데, 위 DB 접속 문장 중에 DSN='' 부분이 다르더라구요. 원래 구문에는 없었는데, 이 부분을 추가

dtsrun 실행하기

Store Procedure 로 수행하기 아래와 같이 명령문을 입력한다 S는 서버명 N은 패키지 명입니다. 슬래시 뒤에 물결표(~)가 있는 글자(예:  /~Z )는 매개 변수 값이 암호화되어 있고 뒤에 오는 값이 암호화된 값의 16진수 텍스트라는 것을 지정합니다 자세한 내용은 아래에 있는 MSDN 내용을 참고하시기 바랍니다. 명령문) dtsrun /S server_name  /U user_nrame  /P password  /N package_name  /M package_password  /R repository_name 사용예) select @mat_cmd='DTSRun /S "(local)" /N "Dts이름"  /E'   exec master..xp_cmdshell @mat_cmd MS-SQL 스케줄에 등록하기 1) 작업을 추가하고 작업 유형에 운영체제명령(CmdExec)를 선택한다. 2) 명령에 DTSRun /~로컬패키지코드 MSDN에 나와있는 dtsrun 실행하는 방법) dtsrun 유틸리티 dtsrun 유틸리티는 데이터 변환 서비스(DTS)를 사용하여 만들어진 패키지를 실행합니다. Microsoft® SQL Server™ msdb 데이터베이스, COM 구조 저장소 파일 또는 SQL Server 메타데이터 서비스에 DTS 패키지를 저장할 수 있습니다. 구문 dtsrun  [/?] | [     [         /[~]S server_name[\instance_name]          { {/[~]U user_name [/[~]P password]} | /E }     ]     {              {/[~]N package_name }          | {/[~]G package_guid_string}          | {/[~]V package_version_guid_string}     }    

MS DTS ( SSIS Package ) 실행시 msdb에서 수행 안될때

MS SQL 2008 에서 SSIS Package를 만들어서 Execute Package Utility를 수행했을 때는 정상적으로 수행되는데, MSDB로 Package를 업로드 했을 때는 DTS Password Validate 에러가 뜨면서 수행이 안되는 경우가 있습니다. Solution 에서 수행이나 File, SSIS Package에서 잘 수행되는데  SQL Server로  Import 해서  xp_cmdshell로 수행이 안될 때 import package 방법을 다음과 같이 해보시기 바랍니다. SSMS 에서 Connect로 Intergration Service 에 연결후 폴더를 확장하면 Stored Package가 있습니다. 여기에서 MSDB를 선택하고 마우스 오른쪽 클릭하시면 Import package 메뉴가 나옵니다. Import package 를 선택후, 대상을 File System을 선택하고 Package 파일 경로를 선택합니다. 그 다음 Import Package as 에서 Protection Level을  Rely on server storage and ... 를 선택하고 확인을 합니다. 그런 다음 MS SQL 창에서  xp_cmdshell 로 DTS 명령문을 실행해보시면 수행되실겁니다.

sp_start_job 수행이 안될때(MS SQL 2008)

Application ID 에서 sp_start_job 이 수행되지 않을 때 일부 Application 에서는 스케줄 작업 등을 등록하고 App. 에서 Control 하는 경우가 있을것이다. Schedule에 등록된 작업을 수행하려면  sp_start_job @job_name 을 수행하면 된다. 그런데 일반 DB Login 아이디를 생성하면  sp_start_job을 수행할수 없다. MS SQL 2008 도움말을 확인해보니 다음의 권한이 있어야 실행이 가능하다. sysadmin의 권한을 가지거나 ( 이 권한은 막강하기 때문에 app에는 어울리지 않는다 ) 아래와 같이 권한이 있으면 수행이 된다. SQLAgentUserRole SQLAgentReaderRole SQLAgentOperatorRole SQL 도움말을 확인하면... By default, members of the  sysadmin  fixed server role can execute this stored procedure. Other users must be granted one of the following SQL Server Agent fixed database role in the msdb database: SQLAgentUserRole SQLAgentReaderRole SQLAgentOperatorRole Members of  SQLAgentUserRole  and  SQLAgentReaderRole  can only start jobs that they own. Members of  SQLAgentOperatorRole  can start all local jobs including those that are owned by other users. Members of  sysadmin  can start all local and multiserver jobs.

[SQL]MS SQL 2000에서 2008로 업그레이드 체크할 사항(쿼리문)

SQL 2000=>2008 달라진점이 여러가지 있습니다만 그중에 쿼리문 관련하여 다음과 같은 사항은 체크해보는게 좋을 듯합니다. 1. Order by 절은 display 되는 필드명을 명시해야 합니다. 아래 구문은 SQL 2000에서는 허용이 되었습니다. Data2+data3이 data1로 표시됩니다. select Data1=data2+data3 from table1 order by data2 그런데, SQL 2008에서는 order by 에러가 발생합니다. 아래와 같이 수정을 하면 에러가 발생하지 않습니다. select Data1=data2+data3 from table1 order by Data1 즉, display 되는 필드를 적어야 합니다. 또한 아래와 같이 동일한 필드를 표시하는데 order by에 동일한 필드인 field1을 넣으면 애매한 필드라고 에러를 발생합니다. Display 필드명을 다르게 주고 order by를 하는게 좋습니다. Select field1,field1,field2 From table1 Order by field1 수정) Select Field_name=field1,field1,field2 From table1 Order by Field_name 2. *=, =* 와 같은 구문은 허용하지 않습니다. 2000버전에서는 left outer join, right outer join형태로 사용이 되었으나 데이터 표기시 Nullable 한 데이터에 대해서 제대로 표기 못하는 오류가 있어 Left outer join을 쓰도록 하고 있습니다. SQL2000에서는 허용이 되었으나 이후 버전에서는 left outer join을 사용해야 합니다. 3. temp table 생성시 길이가 0인 필드는 생성이 안됩니다. 아래 구문과 같이 공란( '' )에 대해서 테이블 생성시 에러가 발생합니다.

[SQL] MS SQL2008에서 메일 사용하기

이미지
SQL 2000에서 2008로 업그레이드시 아래와 같이 구성됩니다. Legacy 아래에 SQL Mail 항목으로 들어가네요. SQL 2000에서는 xp_sendmail을 사용했으나 SQL 2008에서는 sp_send_dbmail을 사용합니다. 아래 그림의 DatabaseMail 항목에 들어갑니다. Database Mail 설정은 별도로 다시 다루겠습니다. xp_sendmail -> sp_send_dbmail 항목 변경이 되었습니다. Xp_sendmail에서는 아래와 같이 사용하는게 일반적입니다. exec @result = master.dbo.xp_sendmail @recipients, @mail_msg, '','', '','', @subject xp_sendmail의 구문은 아래와 같습니다. xp_sendmail { [ @recipients= ] 'recipients [ ;...n ]' } [ ,[ @message= ] 'message' ] [ ,[ @query= ] 'query' ] [ ,[ @attachments= ] 'attachments [ ;...n ]' ] [ ,[ @copy_recipients= ] 'copy_recipients [ ;...n ]' [ ,[ @blind_copy_recipients= ] 'blind_copy_recipients [ ;...n ]' [ ,[ @subject= ] 'subject' ] [ ,[ @type= ] 'type' ] [ ,[ @attach_results= ] 'attach_value' ] [ ,[ @no_output= ] 'output_value' ] [ ,[ @no_header= ] 'header_value

MS SQL 2008에서 Database Mail 설정 방법

MS SQL SSMS 를 실행합니다. Database를 열면 아래와 같이 나오는데, 여기서 Management 아래에 있는 Database Mail을 더블 클릭 또는 마우스 오른쪽 버튼을 눌러 Configure Database Mail 을 실행합니다. 다음과 같이 환경 설정 마법사가 실행됩니다. 여기서 다음을 실행합니다.  다음을 누르면 환경설정을 할수 있는 목록이 나옵니다. 처음 설정을 할 때는 아래와 같이 셋업을 실행합니다. 첫번째 메일 프로파일을 만들고 메일 설정 창을 하시면 됩니다. 다음에 설정을 변경해야 되는 일이 생기면 동일하게 위에서 부터 차례대로 하시고, 두번째, 메일 계정 관리로 들어오시면 됩니다.  저는 미리 만들어 둔 계정이 있어 프로파일 수정으로 들어왔습니다. 메일 프로파일을 여러개 만들 수도 있고, 메일 계정도 여러개로 만들수 있습니다. 아래와 같이 저는 프로파일 명을 제 이름으로 만들었습니다. 그리고 아래의 SMTP 계정 추가를 통해서 설정을 하시면 됩니다. 메일 계정, 프로파일 수정으로 들어오면 아래와 같은 다이얼로그가 나옵니다. 여기서 계정이나 프로파일을 생성 또는 수정할 수 있습니다. 계정을 생성 또는 수정으로 들어오면 다음과 같이 환경설정을 할 수 있습니다. 아래는 네이버 메일로 계정을 설정한 부분입니다. 네이버 메일 설정 부분은 네이버 메일로 접속을 하셔서 환경설정에서 외부메일 사용 설정을 하시면 됩니다. 네이버 메일에 설정을 참고해서 아래와 같이 설정하시면 됩니다. 네이버 메일의 경우는 Server name 에 smtp.naver.com 을 사용하고 Port number에 587 포트를 쓰시고 SSL 체크하시면  됩니다. 그리고 인증 모드에 아래와 같이 basic authenication 사용하고 자신의 네이버 아이디 패스워드를 입력하시고 확인하시면 됩니다.