Asterisk 기반 outbound solution project.
github :
– olive : https://github.com/pchero/olive
– asterisk-zmq : https://github.com/pchero/asterisk-zmq
olive : 캠페인 관리 및 발신 관리 모듈.
asterisk-zmq : json/zmq 모듈.(for asterisk)
Asterisk 기반 outbound solution project.
github :
– olive : https://github.com/pchero/olive
– asterisk-zmq : https://github.com/pchero/asterisk-zmq
olive : 캠페인 관리 및 발신 관리 모듈.
asterisk-zmq : json/zmq 모듈.(for asterisk)
오늘은 한명의 동료가 직장에서 마지막 시간을 보내는 날이었다.
사실, 몰랐다.
5시즈음 되서 퇴근 준비를 하는데 저 멀리서 직장 동료가 뭔가 주섬주섬 짐을 챙기는 것이었다.
예전에 이야기를 들어서 알고는 있었지만 그게 오늘인줄은 몰랐었다.
그 동안(9개월) 같은 팀 내에서 1명의 동료가 퇴사를 하는 것을 보고 1명의 동료가 이사를 하는 것을 보았다.
퇴사는, 나와 비슷한 시기에 입사했던 PM 이었는데, 익살 넘치는 유머와 울룩불룩한 근육이 인상적인 아저씨였다.
나에게 많은 덴마크 문화와 유럽식 농담을 알려주고 개인적으로도 정말 친해지고 싶었던 사람이었다.
퇴사하던날, 참 많이 서운했었는데… 내가 정식 계약을 하던날, 퇴사하게 되었다.
퇴사는 그렇다치더라도, 이사는 무슨 말인가?
그 말은, 진짜로 직장동료가 이사를 간 것이다.
어디로? 저 멀리, 스페인으로.
아까 짐을 주섬주섬 챙기던 직장동료가 이사를 가는 것이다.
덴마크에서 스페인까지 이사를 간다면 당연히 회사를 그만두고 가는 싶었으나, 아니었다.
직장은 계속 그대로 유지한채 그냥 이사만 간 것이다.
일과 회의는 화상전화와 이슈 트래커를 이용해서 작업을 한단다.(헐.)
스페인에 구한 집도 보여주었는데 멋진 집이었다.
2층인가 3층이었고, 일을 위한 자신의 작업방도 있었다.
나중에 내가 집을 구한다면 저런 집을 구하고 싶었다. 아무튼 엄청 멋있어 보였다.
왜 스페인으로 가냐는 물음에, 지금 스페인에 경제위기가 와서 집값이 많이 싸졌단다.
집세를 물어보니.. 갈만하겠더라.
사실, 처음부터 그는 덴마크에서 살고 있지 않았었다.
가까운 스웨덴에 집을 구한다음, 매일 차로 덴마크와 스웨덴의 국경을 넘었던 것.
왜냐고 물어보니 덴마크는 세금이 비싸서 란다… 100% 공감.
사실, 직장동료 대부분은 덴마크인이지만 덴마크에 살고 있지 않고 있다.
대부분 가까운 스웨덴에 집을 구하고 직장은 덴마크에서 다니고 있다.
때문에, 열차가 끊긴다거나, 혹은 차가 고장이 난다던가, 혹은 관공서 볼일이 있다거나(?) 하는 경우 재택근무를 이용한다.
집이 멀리 있기때문에, 관공서 시간에 맞추기 위해 회사에 오가는 시간을 줄이는 것이다.
혹은 몸이 불편한 경우에도 재택근무(혹은 병가)를 이용하는 것이다. – 휴가에 대해서는 나중에 포스팅을 하겠다.
꿈의 재택근무!!!!
일은 하는 것처럼 보이지만, 실제로는 그 누구도 확인할 수 없는 근무!
나도 여기와서 재택근무 몇번 했었는데, 나는 아직까지는,,, 집에서 일이 안되더라(그냥 팅가팅가 놀았음). -_-;;;
그래서 지금와서는 재택근무는 조금 자제하는 편이다.
스페인으로 떠난 직장동료는 매일매일 재택근무를 하겠지.
정말 멋지고 부럽다.
이걸 어떻게 받아들여야 할까?
아마도 이건 그동안 쌓아온 직장내에서의 신뢰가 있기에 가능한 일이겠지만…(그렇지 않을까…?)
그래도 이런일이 가능한 이곳 사회에 박수를 보내고 싶다.
아무튼 오늘로써, 직장 동료 한명을 못본다는 건 사실.
무엇이 되었든, 사람을 떠나보낸다는 건 참 쓸쓸한 일이다.
덴마크 직장(근무시간)에 대하여..
처음 직장을 잡았을땐 정규직/영구직 이 아니었다. 풀타임 근무이되, 월급은 일한 시간만큼 주는 파트 타임 근무였다.(파트 타임 프로그래머라니…)
따라서 나에겐 근무시간이 굉장히 중요했는데, 불행히도(?) 일주일에 최대 40시간 이상을 일을 할 수 없었다. 법으로도 그랬고 계약서 상으로도 그랬다. 그리고 실제로도 그랬다. 매주 30 ~ 40시간 사이의 근무를 했다. 물론 야근 따윈 없었다.
여기에서 특이할 점은 점심시간인데 정확히 자신이 사용한 시간만을 공제한다. 즉, 점심시간은 30분이다. 그럼 계산을하면 최대 주당 40 시간을 일한다고 했을 때, 9시 부터 근무를 시작하면 매일 퇴근시간은 5:30 인 것이다.
오 좋다!! 싶었는데 직장 동료들은 뭔가 이상했다. 4시에도 퇴근을 하고 더 일찍이도 퇴근을 하는 것이다. 왜 그러지…? 싶었는데 새로이 계약서를 받고나서야 알았다.
계약서 상 근무 시간은 주당 37 시간이며 업무 시간은 08:30 ~ 16:30. 게다가 금요일은 16:00 까지만 일하는 것으로 되어있다. 즉 직장 동료들은 30분 일찍 근무를 시작했던 것.. 이제는 나도.. ㅎㅎㅎ
며칠전 열심히 일을 하고 있었는데 한 직장 동료가 가만히 다가와서 나에게 “Go home” 이라고 말하고 집에 갔다.
시간을 확인 하니 오후 5시… 이미 사무실엔 나밖에 없었다. 오후 5시에 회사에 홀로 남겨진 기분.. 문화충격이었다.
그렇다면 남는 시간에 무엇을 하나? 그건 다음 포스팅에서..
보면 볼수록 정말 부럽고도 부러운 나라다. 어떻게 이런게 가능한지..
utime 은 파일의 Access time 및 Modification time 을 변경할 때 사용하는 함수이다.
특정 파일 정렬을 할 때, 파일의 이름을 파싱해서 정렬을 하는 것이 아닌, 파일의 Modification time 을 기준으로 정렬을 해야하는 경우가 있다.
이런 경우, 파일 작업 이후에도 이전의 Modification time 을 유지해야 하는 경우가 있는데,
이런 경우, utime 을 사용하면 편리하다.
utime 은 input 인자로 utimebuf 라는 구조체를 사용한다. utime 을 이용하면 access time 과 modification time 을 수정할 수 있다.
struct utimbuf {
time_t actime; /* access time */
time_t modtime; /* modification time */
};
SYNOPSIS
#include <sys/types.h>
#include <utime.h>int utime(const char *filename, const struct utimbuf *times);
#include <sys/time.h>
int utimes(const char *filename, const struct timeval times[2])
샘플 코드
/*
* main.c
*
* Copyright 2014 Sungtae Kim <pchero21@gmail.com>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
* MA 02110-1301, USA.
*
*
*/
#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
#include <utime.h>
#include <stdlib.h>
#include <time.h>
void file_stat(struct stat sb);
int main(int argc, char **argv)
{
struct stat sb[2];
int i;
if (argc != 3) {
fprintf(stderr, "Usage: %s <pathname>\n", argv[0]);
exit(EXIT_FAILURE);
}
printf("Before utime-----------------------------------\n");
for(i = 0; i < 2; i++)
{
if (stat(argv[i + 1], &sb[i]) == -1) {
perror("stat");
exit(EXIT_FAILURE);
}
file_stat(sb[i]);
printf("--------\n");
}
struct utimbuf ubuf;
ubuf.actime = sb[0].st_atime;
ubuf.modtime = sb[0].st_mtime;
// Let's use utime!
utime(argv[2], &ubuf);
printf("\n\nAfter utime-----------------------------------\n");
for(i = 0; i < 2; i++)
{
if (stat(argv[i + 1], &sb[i]) == -1) {
perror("stat");
exit(EXIT_FAILURE);
}
file_stat(sb[i]);
printf("--------\n");
}
return 0;
}
void file_stat(struct stat sb)
{
switch (sb.st_mode & S_IFMT) {
case S_IFBLK: printf("block device\n"); break;
case S_IFCHR: printf("character device\n"); break;
case S_IFDIR: printf("directory\n"); break;
case S_IFIFO: printf("FIFO/pipe\n"); break;
case S_IFLNK: printf("symlink\n"); break;
case S_IFREG: printf("regular file\n"); break;
case S_IFSOCK: printf("socket\n"); break;
default: printf("unknown?\n"); break;
}
printf("I-node number: %ld\n", (long) sb.st_ino);
printf("Mode: %lo (octal)\n",
(unsigned long) sb.st_mode);
printf("Link count: %ld\n", (long) sb.st_nlink);
printf("Ownership: UID=%ld GID=%ld\n",
(long) sb.st_uid, (long) sb.st_gid);
printf("Preferred I/O block size: %ld bytes\n",
(long) sb.st_blksize);
printf("File size: %lld bytes\n",
(long long) sb.st_size);
printf("Blocks allocated: %lld\n",
(long long) sb.st_blocks);
printf("Last status change: %s", ctime(&sb.st_ctime));
printf("Last file access: %s", ctime(&sb.st_atime));
printf("Last file modification: %s", ctime(&sb.st_mtime));
}
결과
pchero@MyGalaxy:~/workspace/Study/Program/file/stat_example$ ./main ./test.txt test2.txt Before utime----------------------------------- regular file I-node number: 12976592 Mode: 100664 (octal) Link count: 1 Ownership: UID=1000 GID=1000 Preferred I/O block size: 4096 bytes File size: 0 bytes Blocks allocated: 0 Last status change: Thu Aug 7 11:08:25 2014 Last file access: Thu Aug 7 10:56:34 2014 Last file modification: Thu Aug 7 10:56:34 2014 -------- regular file I-node number: 12976593 Mode: 100664 (octal) Link count: 1 Ownership: UID=1000 GID=1000 Preferred I/O block size: 4096 bytes File size: 0 bytes Blocks allocated: 0 Last status change: Thu Aug 7 11:11:53 2014 Last file access: Thu Aug 7 11:11:53 2014 Last file modification: Thu Aug 7 11:11:53 2014 -------- After utime----------------------------------- regular file I-node number: 12976592 Mode: 100664 (octal) Link count: 1 Ownership: UID=1000 GID=1000 Preferred I/O block size: 4096 bytes File size: 0 bytes Blocks allocated: 0 Last status change: Thu Aug 7 11:08:25 2014 Last file access: Thu Aug 7 10:56:34 2014 Last file modification: Thu Aug 7 10:56:34 2014 -------- regular file I-node number: 12976593 Mode: 100664 (octal) Link count: 1 Ownership: UID=1000 GID=1000 Preferred I/O block size: 4096 bytes File size: 0 bytes Blocks allocated: 0 Last status change: Thu Aug 7 11:12:01 2014 Last file access: Thu Aug 7 10:56:34 2014 Last file modification: Thu Aug 7 10:56:34 2014 --------
요즘 뭔가 무료하고, 재미가 없는 하루가 계속됐다.
그러다가 예전 2010년도 경에 작성했던 내 자기소개서를 보게 되었다.
머리에 꽝. 뭔가 깨닫는게 왔다.
그래, 이러고 있을때가 아니지. 🙂
세계를 무대로 제 자신을 나타내고 싶었습니다. 저 넓은 세상이 분명히 있는데도 불
구하고 국내에만 머물기는 저의 꿈이 너무 크고 젊음이 아깝다고 생각했습니다.
그래서 국내의 글로벌 기업들을 대상으로 해외에 진출하여 사업을 진행하는 기업이
있는지를 조사하여 귀사가 해외에 진출하여 사업을 진행중에 있다는 것을 알게 되었
습니다.그리고 귀사에서 채용공고를 하고 있다는 것도 알 수 있었습니다. 비록 경력과 경험
이 부족하지만 제가 가진 능력과 재능이라면 반드시 귀사에 도움이 될 수 있을것이
라 생각하여 이렇게 입사 지원을 하게 되었습니다. 부족한 부분은 저의 열정과 젊음
으로 메꿀 수 있다고 생각합니다. 현재가 아닌 저의 발전 가능성에 기반한 미래의 제
모습으로 귀사에 지원을 한 것입니다.앞으로 5 년 뒤, 10 년 뒤의 정확한 저의 모습은 누구도 알 수 없겠지만, 제가 바라
는 미래의 모습은 세계의 굴지의 개발자들과 머리를 맞대고 더 나은 서비스와 개발
을 위해 고민하고 해결하기 위해 노력하는 모습입니다. 항상 난관과 고난에 부딫혀
도 굴하지 않고 계속해서 도전하여 끝내는 이루고 마는 저의 모습을 상상합니다.
젊디 젊은 20 대의 청춘을, 못할 것이 없는 청춘의 20 대를 제가 원하는 직장, 제가
원하는 일, 제가 원하는 무대를 바탕으로 제 자신을 나타내고 싶습니다. 제 자신을
증명하고 싶습니다. 그리고 제 미래를 귀사와 함께 하고 싶습니다.
그리고 지금 나는 이곳 덴마크에서 정말로 멋지고 개성 넘치는 동료들과 함께 일을 하고 있다.
– 그 중의 한 명은 FreeBSD 커널 개발자이기도 하다. 🙂