현상 : 웹어플리케이션을 아파치서버에서 구동시에 웹브라어저에서 리프레시로 재접속할려고 할때 505 에러메시지 발생

에러메시지 : AH00124: Request exceeded the limit of 10 internal redirects due to probable configuration error. Use 'LimitInternalRecursion' to increase the limit if necessary. Use 'LogLevel debug' to get a backtrace.

접근방법

apache 의 httpd.conf파일에서 debug 모드로 수정하고 자세한 에러로그를 확인한다.

해결책 :

1. 모듈을 작동되는지 확인한다.

mod_rewrite 모듈을 로드되어 있어야 한다.

2. vhost conf 파일에 rewrite 로직을 추가한다.

      RewriteEngine on

      # Don't rewrite files or directories

      RewriteCond %{ENV:REDIRECT_STATUS} ^$

      RewriteCond %{REQUEST_FILENAME} -f [OR]

      RewriteCond %{REQUEST_FILENAME} -d

      RewriteRule ^ - [L]

      # Rewrite everything else to index.html to allow html5 state links

      RewriteRule ^ index.html [L]

3. index.html의 기본경로가 htdocs 폴더이므로 실제경로를 입력해 준다.

RewriteRule "^/games" "/usr/local/games/web"


블로그 이미지

희망잡이

,



참고사이트 : https://www.youtube.com/watch?v=cjy7pOvEcBU&t=21s

제목 : GIMP Tutorial: Transform Face into Galaxy Silhouette


무엇을 가지고 어떻게 작업을 해서 최종적으로 결과물이 만들어 지는지 궁금하기도 하고 재미가 있을거 같아서 이 유투브 강좌를 따라해 보았다.

김프 라는 오픈소스툴을 사용해서 인물의 얼굴 윤곽 또는 실루엣을 뽑아서 배경 이미지를 입히는 작업으로 보인다.

먼저 구글사이트에서 필요한 인물사진 1장과 배경사진 1장을 다운로드 한다.

Gimp 에서 백그라운드 이미지로 배경사진을 그리고 그 위층에 인물사진을 배치한 레이어 작업을 한다.

인물 레이어를 선택하고 Alpha Channel  을 추가한다. 

얼굴의 형상을 만들어 내기 위해서 Paths Tool 을 이용하여 얼굴 외곽선을 그려 준다.

그리고 엔터 키를 눌러서 연결고리를 종결처리 한다.

사진의 얼굴에 비해 배경이 밝은 상태이면 나중에 잘 분리될수 있는 걸로 보인다.

메뉴 - Select 에서 Invert 를 클릭하고 키보드에서 Del 키를 눌러서 선택 이외의 것을 삭제한다.

얼굴 형상을 분리 하기 위한 방법으로 어두운 영역과 밝은 영역을 분리시키는 것이다.

이것을 만들어 내기 위해서는

1. Colors - Levels 메뉴을 클릭해서 어두운 곳을 더욱 어둡게 그리고 밝은 곳을 더욱 밝게 하여 명암을 확연히 분리시킨다. 만족스러울때 까지...

2. Colors - Saturation 메뉴를 클릭해서 흑백으로 바꾼다.

3. Colors - Threshold 메뉴를 클릭해서 검은영역은 더욱 검게 그리고 밝은 영역은 더욱 밝게 하여 색상으로 구별할수 있도록 한다.

해상도가 좋은 사진인 경우에 머리카락 한올 까지도 Threshold를 조정하면 세세하게 구별할수 있는 것처럼 보인다.

4. Select by color tool : select regions with similar colors

없애고 싶은 흰색 밝은 영역을 선택한 다음에 키보드 delete 키를 눌러 밝은 영역을 삭제한다.

배경 화면이 삭제된 밝은 영역에 표시된다.

5. Select by color tool : select regions with similar colors

검은색 어두운 영역을 선택한다.

6. 인물 레이어의 보기 아이콘을  disable  시킨다.

6.1 배경화면에 Alpha Channel  을 추가한다. 

7. select - invert 를 선택하고 키보드  del 키를 눌러 선택된 인물 이외 영역을 삭제한다.

8. 레이어를 추가 한다.

9. Gradient Tool 을 선택해서 배경영역을 흰색에서 검은색으로 Gradient 시킨다.

10. 레이어를 제일 bottom으로 이동시킨다.



블로그 이미지

희망잡이

,


라즈베리 파이에서 웹브라우저를 사용하여 작업을 자동화 할려고 하면  Chromium 브라우저용 Chrome Driver  가 있어야 한다.

현재 구글에서는 해당  Chrome  Driver 를 제작하지 않고 있으며

다행히도 파이썬 그룹에서 사용할수 있는 Chrome Driver  를 배포하고 있다고 합니다.

sudo apt-get install chromium-chromedriver


참고사이트 : https://ivanderevianko.com/2020/01/selenium-chromedriver-for-raspberrypi

블로그 이미지

희망잡이

,

# https://www.gimp.org/tutorials/Floating_Logo/

새로 만들기(  new )  로 작업공간을 구성한다. ( px  단위로 256 * 128 )

백그라운드 색상은 검은색으로 설정하고 포그라운드 색상은 흰색으로 설정한다.

배경색 설정 아이콘에서 색상을 지정한다.

텍스트 아이콘을 클릭해서   'PAT' 글자를  사이즈 100 으로 해서 입력한다.

텍스트 레어어가 선택된 상태에서 Layer - New from visible   메뉴을 클릭해서 신규 레이어 층을 만든다.

텍스트를 흐리게 하는 효과를 주기 위해  Filters - Blur - Gausian Blur 메뉴를 클릭한다.

새로운 레이터를 생성해서 Filters → Render → Clouds → Plasma… 메뉴에서 효과 배경을 생성한다.

효과 배경의 레이어가 선택된 상태에서 Filters → Map → Bump Map… 으로 이동하여 depth 를 조정하여 미리 만들어 둔 Aux Input 항목에서  텍스트 레이어를 지정한다.

효과 레이어를 선택한 상태에서 Layer → Mask → Add Layer Mask… 를 클릭하면 플라즈마 레이어에 추가된 백색화면이 보인다.

visible  레이터를 선택한 상태에서 Edit → Copy 를 한 다음에 추가된  Layer Mask 에 Edit → Paste 한다.

레이어 관리영역에서 Floating Selection  레어어가 생성이 되어 있는데 이것을 작업영역으로 가져와야 한다. 

Layer → Anchor Layer 를 클릭하면 작업영역으로 가져온다.

배경색을 바꾸고자 한다면 레이어를 추가해서 배경색을 바꿀수가 있다.

Colors → Levels… 메뉴를 통해 글자의 윤곽선을 조정할수 가 있다.

텍스트의 그림자 효과를 주기 위해서는 

visible layer  를 선택하고 Layer → Duplicate Layer 메뉴를 클릭하면 복사된 레이어가 생성된다. 

Colors → Invert

Layer → Transparency → Color to Alpha…

Tools → Transfom Tools → Move




블로그 이미지

희망잡이

,

1. MariaDB Connector 모듈 설치

pip install mariadb

2. Connection & Transactiion  처리

import mariadb
import sys

try:
   conn = mariadb.connect(
        user="xxx",
        password="xxx",
        host="localhost",
        port=3306,
        database="mysql")

   conn.autocommit = False
   cursor = conn.cursor()
   
   cursor.execute("SELECT code,codename FROM codemaster WHERE code=?", ('001',))
   # Print Result-set
   for (first_name, last_name) in cursor:
       print(f"Code: {first_name}, Code Name: {last_name}")
       
   # withdraw from account A 
#    sql_update_query = """Update codemaster set crt_emp = '000030' where codegrp = 'MST001'"""
#    cursor.execute(sql_update_query)

   # Deposit to account B 
   sql_update_query = """Update codemaster set crt_emp = 'XXX' where code = '001'"""
   cursor.execute(sql_update_query)
   print ("Record Updated successfully ")

   #Commit your changes
   conn.commit()

except mariadb.Error as error :
    print("Failed to update record to database rollback: {}".format(error))
    #reverting changes because of exception
    conn.rollback()
finally:
    cursor.close()
    conn.close()
    print("connection is closed")
블로그 이미지

희망잡이

,

어느날 제록스 복합기를 사용해서 200장 되는 A4 자료를 pdf 로 변환해야될 일이 생겼다.

그 전까지 제록스기에서 pc저장으로 잘 되는 기능이 아래와 같은 에러를 발생시켰다.

송신실패

- 이상종료( 027 - 516 ) : Server connection error in SMB

원인은 SMB 기능으로 내 PC에 복합기가 접근하지 못한다는 것이다. 

첨부된 사진과 같이 windows 기능 켜기/끄기에서 SMB 기능 을 확인해서 적용해 주면 된다.

 

블로그 이미지

희망잡이

,

ojdbc8.jar
3.97MB

1. Download oracle jdbc thin driver at oracle site.

use the ojdbc8.jar from sqlcl. because i installed sqlcl.

path : /home/pi/Oracle/sqlcl/lib/ojdbc8.jar

2. EDIT TO JAVA_HOME 

nano ~/.bashrc

add the below sentence.

export JAVA_HOME="/usr/lib/jvm/jdk-8-oracle-arm-vfp-hflt"

export PATH=$PATH:$JAVA_HOME/bin

check display through export command.

3. install pandas, jaydebeapi, jpype

sudo apt-get install python-pandas

sudo pip install jaydebeapi

sudo pip install jpype1

3. create jdbc_orcle.py

import os

import sys

import jpype

import jaydebeapi as jp

import pandas.io.sql as pd_sql

from pandas import DataFrame

# JAVA_HOME이 설정되어 있지 않을 경우

if("JAVA_HOME" not in os.environ):

  os.environ["JAVA_HOME"] = "[JAVA_HOME path]"

# oracle jdbc 파일 경로 및 class 경로 설정

JDBC_Driver = '[jdbc Driver path]/ojdbc6.jar'

jar = r'[jdbc Driver path]/ojdbc6.jar'

args = '-Djava.class.path=%s' % jar

# 환경 변수 출력

print('Python Version : ', sys.version)

print('JAVA_HOME : ', os.environ["JAVA_HOME"])

print('JDBC_Driver Path : ', JDBC_Driver)

print('Jpype Default JVM Path : ', jpype.getDefaultJVMPath())

# java class path 설정

jpype.startJVM(jpype.getDefaultJVMPath(), args)

# oracle 접근

conn = jaydebeapi.connect('oracle.jdbc.driver.OracleDriver','jdbc:oracle:thin:user/password@DB_HOST_IP:1521:DB_NAME')

cur = conn.cursor()

# Select Query 실행

sql = "SELECT * FROM TEST"

pd_sql.execute(sql, conn)

df = pd_sql.read_sql(sql, conn, index_col = None)

print df.head()
jpype.shutdownJVM()

블로그 이미지

희망잡이

,

Occasionally we developed the simple web application. But Test Environment is not simple.

This Test environment is simple

1. you have to crate git hub repository and upload your web application

2. you move to settings in the upper your repository.

3. you move below to the github pages

  - change the source to master branch

Perhaps you may see the sentence.

Your site is ready to be published at https://anemos.github.io/camera-app/"

블로그 이미지

희망잡이

,