콘텐츠로 바로가기

now0930 일지

이런저런 생각

  • 홈
  • 비공개
  • 강좌
  • 잔여 작업 조회
  • 위치

gps 태그 앨범 제작(3/4)

perl을 쓰기 위해 docker를 사용했다. commit대신 간단한 Dockerrun을 만들었다. commit으로 이미지를 만들면 다음에 다시 만들 수 없다한다.

FROM perl:v5.30.1
MAINTAINER ???
RUN apt-get -y update
#GooglaMaps::V3 설치
RUN cpan HTML::GoogleMaps::V3
#https 설정.
RUN cpan install LMP::UserAgen Mozilla::CA
RUN cpan install LWP::Protocol::https
RUN cpan install Bundle::DBI
RUN cpan install DBD::mysql

host에 있는 mysql에 접속하기 위해 옵션을 docker에 run 옵션을 줬다.

docker run -it --network=host -e LC_ALL=C.UTF-8 -v ????:/home/ perl:mysql_Map /bin/bash

DBI:mysql로 연결할 때 띄어쓰면 에러를 볼 수 있다. 붙여써야 한다. 이걸 모르고 하루를 날렸다. 또 한글 출력에 문제가 있는데 binmode를 주석처리 했다.

se utf8;
use strict;
use warnings;
use DBI;
use HTML::GoogleMaps::V3;
#아래내용은 구글MAPs 에 사용.
#binmode STDOUT, ":utf8";

my $host ="127.0.0.1";
my $user = "???";
my $password = "?????";
my $database = "?????";
my $tablesname =  "????";

#모두 붙여서 사용..
#space 있으면 connect 에러
my $dbh = DBI->connect("DBI:mysql:database=$database;host=$host", $user, $password, {RaiseError => 1});

#한글 설정
my $setkorean="SET NAMES utf8";
$dbh->do($setkorean);
#query 설정.
#my $query = "select * from picture where 태그 like '%??%' limit 10";
#테스트용 query
my $query = "select * from picture where (태그 like '%??%' and gpsLatFloat != 0) limit 10";

#query 실행
#my $sth=$dbh->prepare($query);
#$sth->execute();

#while(my $ref = $sth->fetchrow_hashref()){
#	print "Found: $ref->{'perl_tag'}";
#}
#print $sth->rows;

my $map = HTML::GoogleMaps::V3->new(
    api_key => "???"
);

#query 실행
my $sth=$dbh->prepare($query);
$sth->execute();

while(my $ref = $sth->fetchrow_hashref()){
	print "Found: $ref->{'perl_tag'}";
	$map->add_marker(
		point => [$ref->{'gpsLongFloat'},$ref->{'gpsLatFloat'}],
		html => qq{<a href=$ref->{perl_path}>$ref->{perl_tag}</a>},
		);
};#while loop

$sth->finish();
$dbh->disconnect();

my ( $head, $map_div ) = $map->onload_render;

print <<"END_HTML";
<!doctype html>
<html>
<head>
<meta charset="utf-8" />
END_HTML

print $head . "\n";

print <<"END_HTML";
</head>
<body onload="html_googlemaps_initialize()">
END_HTML

print $map_div . "\n";

print <<"END_HTML";
</body>
</html>
END_HTML

이제 marker infoWindows를 이쁘게 설정하면 된다. 아무래도 설명을 입력해야 할 듯 하다.

이 글 공유하기:

  • Tweet
발행일 2020-02-12글쓴이 이대원
카테고리 생활코딩 태그 gps, perl, 앨범, 지도

댓글 남기기응답 취소

이 사이트는 Akismet을 사용하여 스팸을 줄입니다. 댓글 데이터가 어떻게 처리되는지 알아보세요.

글 탐색

이전 글

gps 태그 앨범 제작(2/4)

다음 글

gps 태그 앨범 제작(4/4)

2026 3월
일 월 화 수 목 금 토
1234567
891011121314
15161718192021
22232425262728
293031  
2월    

최신 글

  • 현대전력전자공학, 5장 2026-02-25
  • 현대전력전자공학, 4장 2026-02-20
  • 현대전력전자공학, 2장 2026-02-20
  • 현대전력전자공학 1장 2026-02-19
  • code assistant 사용 소감 2026-02-19

카테고리

  • 달리기
  • 산업계측제어기술사
  • 삶 자국
    • 책과 영화
    • 투자
  • 생활코딩
    • LEGO
    • ROS
    • tensorflow
  • 전기기사
  • 피아노 악보

메타

  • 로그인
  • 입력 내용 피드
  • 댓글 피드
  • WordPress.org

페이지

  • 소개
  • 잔여 작업 조회
    • 작업 추가
    • 작업의 사진 조회
    • 작업 수정 페이지
  • 사진
    • GPS 입력된 사진
    • 사진 조회
  • 위치
    • 하기 휴가 방문지
    • 해외 출장

태그

android bash c docker driver FSM gps java kernel LEGO linux mysql network program opcua open62541 plc programmers python raspberry reinforcementLearning ros state space system program tensorflow transfer function 경제 달리기 러닝 미국 민수 삼국지 세계사 실기 역사 일본 임베디드 리눅스 전기기사 조선 중국 채윤 코딩 테스트 통계 한국사 한국어

팔로우하세요

  • Facebook
now0930 일지
WordPress로 제작.