반응형
블로그 이미지
개발자로서 현장에서 일하면서 새로 접하는 기술들이나 알게된 정보 등을 정리하기 위한 블로그입니다. 운 좋게 미국에서 큰 회사들의 프로젝트에서 컬설턴트로 일하고 있어서 새로운 기술들을 접할 기회가 많이 있습니다. 미국의 IT 프로젝트에서 사용되는 툴들에 대해 많은 분들과 정보를 공유하고 싶습니다.
솔웅

최근에 올라온 글

최근에 달린 댓글

최근에 받은 트랙백

글 보관함

카테고리


반응형

지지난주 토요일 Automation Test 를 이용해서 Production Deployment 작업을 진행해서 일을 훨씬 수월하게 끝마칠 수 있었습니다.


총 300여개가 넘는 job (test case) 들이 있었고 이것을 실행하는 시간은 총 27시간 이었습니다.

그런데 Jenkins 에 20개의 Agents들이 있어서 이 작업을 1시간 반만에 끝 마칠 수 있었죠.


예전에 매뉴얼로 할 때는 저녁 6시가 넘어서까지 일했다고 하던데...

Automation Test 를 이용한 지난번 Production Deployment는 아침 10시에 끝날 수 있었습니다.


엄청난 시간 절약이고 회사 입장에서는 엄청난 비용 절감이죠.


이걸 Client에게 제대로 인식시켜야 하니까 이 내용을 PPT에 담아서 고객에게 보여줘야겠죠.


저는 정말 PPT 작업 못 하는데... 그나마 제가 낫다고 저보고 하라그래서 슬라이드 한 두장정도 만들어서 줬어요.


물론 담당자가 좀 더 수정을 했지만요.


그거 만들면서 시간을 많이 계산해야 했습니다.


분:초 로 돼 있던 시간을 초로 계산하고 또 초를 다시 분:초로 만들고 분을 시:분으로 만들고 하는 것들이요.


그래서 이 내용들을 정리해 두려구요.



1. 분:초 를 초로 변환하기


07:32

 452


7분 32초를 이렇게 초로 계산하려면 아래와 같이 하면 됩니다.


=LEFT(위치,2)*60+MID(위치,4,2)



2. 초를 분:초로 변환하기


303.3384615

 05:03


303.3384615 초를 분:초 로 변환 하려면 아래와 같이 하면 됩니다.


=TEXT(TIME(,,위치),"mm:ss")




이렇게 한 다음에 =위치/86400 을 하는 방법도 있네요.

여기를 보시면 자세한 내용을 보실 수 있습니다.



3. 분을 시간:분 으로


1643

 27hrs23mins


1643분을 시간:분으로 표시하려면 아래와 같이 하면 됩니다.


=INT(위치/60)&"hrs"&MOD(위치,60)-MOD(위치,1)&"mins"



보고서 같은 거 작성할 때 필요할 때가 있을 것 같네요.


반응형


반응형

지역 방송에서 소개하는 카페에 다녀왔어요.

Waconia 에 있는 커피숍인데 집에서 20분 정도 떨어져 있어요.







그냥 집을 카페로 만들어 편안한 느낌을 주는 커피숍이었어요.

저는 커피를 잘 안먹는데 비엔나 커피를 시켰어요. 자기네들은 조금 특이하게 한다면서 괜찮겠냐고 해서 그냥 달라고 했는데..

조그만 사발에 아이스크림넣고 에스프레소를 살짝 얹어 주었는데 저한테는 아주 좋았습니다.



WCCO Viewers’ Choice For MN’s Best Coffeehouse



WACONIA, Minn. (WCCO) — For many of us, it’s routine to stop in at the local coffeehouse before heading off on our day. But with a coffee shop on practically every corner, how do can you pick a favorite?


많은 분들이 퇴근길에 커피숍에 들르시죠? 그런데 그 많은 커피숍 중에 단골집을 어떻게 고르세요?

Well, we made you choose.
우리가 도와 드릴께요.

And your votes sent me to Waconia for a cup of joe at Mocha Monkey – a coffeehouse that happens to have a pottery studio in the basement.


여러분들이 투표에 참여해 주셨는데요 Waconia에 있는 Mocha Monkey를 추천해 주셨습니다. 지하에 도자기 공방도 있어요.

“So, when you get a latte or a cappuccino, and if you’re having it for here, then you’re actually gonna get a mug that I made,” said Jon Schmidt, the shop’s owner.

"라떼나 카푸치노를 여기서 드시면 제가 만든 머그컵을 받으실 수 있어요." 라고 카페 주인장인 Jon Schmidt 은 말합니다.

It’s not the most conventional business model. But, then again, Schmidt isn’t a conventional business owner. He bought Mocha Monkey when he was just 21, halfway through his senior year of college.

전통적인 비지니스 모델은 아니지요 Schmidt도 전통적인 그런 카페 사장님도 아닙니다. 그는 21살 때 이 Mocha Monkey를 샀습니다. 대학교를 중간 쯤 다닐 때죠.



“I was down at Gustavus [Adolphus College] Tuesday and Thursday, and I was here Monday, Wednesday, Friday, and every weekend. And so that’s how the first part of my business [went],” he said. “I was going to school and taking over this business, and since then it’s just been a great experience.”

"매주 화요일하고 목요일에 학교(Gustavus [Adolphus College])에 갔고 여기는 월, 수, 금 이렇게 왔어요. 저의 첫 사업의 시작이었죠. 학교에 다니면서 이 일을 했어요. 아주 좋은 경험이었어요."

On the day I visited, Schmidt could count the mayor of Waconia as one of his customers.

제가 방문 했을 때 Schmidt 는 그의 단골 손님 중 한명인 Waconia의 시장을 맞이하고 있었습니다.

“It’s my office for meeting with my constituents,” said Mayor Jim Nash. “Ya know, I spend a lot of time here, and so does everyone else. It’s sort of a social gathering place.”

"이곳은 저의 유권자를 만나는 오피스 입니다. 다른 많은 분들처럼 여기서 아주 많은 시간을 보내지요. 일종의 사회적인 친목 공간입니다." 라고 Jim Nash 시장은 말했습니다.

A big part of what makes Mocha Monkey a gathering place is the building itself: It’s a 100-year-old Victorian home right in the middle of downtown.

Mocha Monkey 가 사회적인 친목 공간이 될 수 있는 큰 이유 중 하나는 그 건물 자체 입니다. 시내 중심에 있는 빅토리아 풍의 100년된 주택이 바로 그 건물 입니다.

“It’s been a ton of different things, from apartments upstairs, to a flower shop, to a tire shop,” Schmidt said.

"아파트나 꽃집, 타이어가게 등과는 아주 확실히 다르죠." 라고 Schmidt는 말한다.

Currently, the coffee shop houses local art, including Schmidt’s pottery. The cozy and creative atmosphere invites customers to make themselves at home.

이 커피숍은 Schmidt의 도자기들을 비롯해 여러 지역 예술품들을 전시하는 공간이기도 합니다. 편안하고 창조적인 공간을 만들어 손님들에게 마치 집에 있는 것 같은 느낌을 만들어 줍니다.

“On any given day you’ll see meetings here, high school kids doing homework, people working here by themselves, Bible studies, an array of different group that’ll come,” Schmidt said.

"아무때나 오면 여기서 사람들이 모이는 것을 보실 수 있으세요. 고등학생들은 숙제를 하고 성경공부도 하고 여러 모임들이 와서 그들의 일을 하죠." 라고 Schmidt는 말합니다.

Of course, customers also come for the coffee. While the beans aren’t roasted in house, they don’t travel far.

물론 손님들은 여기에 커피를 마시러 오시죠. 가게에서 커피를 볶지 않으면 손님들은 여기 오시지 않을 겁니다.

“SpecialtyJava.com is what they’re called,” Schmidt said. “It’s just a mile away from here, they fresh roast it. We order it the night before, and it comes still hot in the bags the next day.”

"커피는 SpecialtyJava.com에서 볶습니다. 여기서 1마일 정도 떨어져 있죠. 저희는 바로 전날 볶은 커피를 사용하고 있습니다. 아직 커피가 뜨끈뜨끈할 때 받아요."

There’s also the creative concoctions, like the Rhesus Mocha Monkey, a chocolate and peanut butter mocha.

그들만의 독특한 메뉴를 개발하기도 하죠. Rhesus Mocha Monkey 처럼 말이죠. 초콜릿과 Peanut butter mocha로 만든 겁니다.

“People love that,” Schmidt said.
"그 메뉴를 아주 좋아하시죠." 라고 Schmidt는 말합니다.

The success of Mocha Monkey allowed Schmidt to open a second location in December, giving Waconians even more of an incentive to take their coffee break at Mocha Monkey.

Mocha Monkey 의 성공으로 Schmidt는 12월에 2호점을 오픈했습니다. Waconia 주민들에게 Mocha Monkey에서 커피를 즐길수 있는 기회를 더 많이 제공해 드리게 됐습니다.

“If you needed somewhere to go, ya know, we’re here, and you can come hang out and drink some awesome coffee,” Schmidt said.

"어딘가 외출하고 싶으시다면.. 예 저희가 여기 있습니다. 들르셔서 awesome coffee를 즐기세요." 라고 Schmidt는 말합니다.

In addition to supporting local artists, Mocha Monkey also has live music on Fridays and Saturdays.

또하 Mocha Monkey 에서는 매주 금요일과 토요일에 지역의 음악가들이 라이브 음악을 연주하기도 합니다.


반응형

TDD Project Production Deployment 경험....

2014. 3. 17. 11:24 | Posted by 솔웅


반응형

지난주에 새로운 팀에 배치된 후 첫째주인 지난 토요일 Production Deployment 가 있었어.

우리 Automation Tester 들은 토요일 새벽 5시부터 대응해서 낮 12시까지 일했거든...


조금 전에 회사 이메일 보니까 그 이후에도 작업이 계속 되고 마지막으로 담당자가 Complete 됐다는 메일이 조금 전에 오고 (일요일 8:00PM)  대빵이 Great Deployment weekend everyone!! 이라는 단체메일을 보낸 걸로 봐서 바로 조금 전에 모든 일이 완료 됐나봐...


나는 당연히 이 팀에 온지 1주일도 안 됐으니 대응은 인도에 있는 offshore partner 가 했어..

걔 담주에 1주일간 휴가인데 휴가 들어가는 토요일 사무실에 출근해서 밤 늦게까지 일했어..

불쌍한 Versha... Anyway Have a great vacation.

그러니까 인도랑 시간차이를 계산하면 걔는 오후 3시부터 밤 10시까지 일한거네...

(우리는 새벽 5시부터 오후 12시까지 집에서 Online으로 대응했어..)


하여간 이번 Production Deployment를 Observe 하면서 많은걸 배운거 같애...

특히 Automation Test 의 필요성 같은거 말야...





Production에 Web Application이 Deploy 되면서 Automation Test 프로그램들도 같이 Deploy 돼...

Automation Test 는 Selenium Webdriver로 만들고 Jenkins 에서 관리가 되거든.

Production Server에 테스트들이 Deploy 되면 이 테스트들을 실행 시키고 그 결과가 Excel 파일로 정리가 되서 Automation Tester 들에게 전달 돼..

그러면 Tester 들은 fail 난 job들을 manual 테스트를 해서 Web Application에 defect가 있는 거면 ALM에 Defect 보고를 하고 Test Script에 문제가 있는 거면 그걸 분석해서 보고를 하지...


그러면 Developer들은 해당 defect를 보고 이걸 제대로 modify 해서 보완을 하고 다시 테스트를 돌려서 성공하는 걸 확인 하면 일은 끝....



물론 Production에 Deploy 되면 Developer 들은 Development Team 대로 테스트를 하고 Business Team 은 Business 팀대로 테스트를  하겠지..


거기에 Automation Test Team까지 추가되서 자동화 시킨 Test job들을 가지고 테스트 하는 부분이 추가 된거야..


4~5년전 한국에 있을 때만해도 TDD 프로젝트는 거의 없었던거 같은데.. Test 를 별도로 Tester 들이 진행하는 구조도 거의 없고 그냥 개발자나 현역(Business)들이 개발 후에 테스트 하고 넘어가는 식으로 일하는게 보통이었었어..

지금은 어떤지 모르지만 Test를 따로 Team을 만들어서 Automation 시킨다는 것에 대해 별로 필요하다고 생각하지도 않는 분위기였던거 같아...



그런데 여기 와서 제대로 TDD 프로젝트에 참여하고 Production Deployment 까지 경험하니까... 이 Automated Testing 의 중요성을 제대로 알 게 되더라구...


지금 나는 Test Server 환경에서 작업을 하고 있는데 이 작업이 끝나면 QA 환경으로 옮겨 져서 테스트가 진행이 될 거야..

그 다음에 Production으로 Deployment 되는거지...

이제 Production Deployment까지 경험했으니 조만간 QA 환경에서의 테스트는 어떤게 어떻게 진행이 될지 배우게 되겠지...


TDD Project를 제대로 배울 수 있는 좋은 기회인거 같애.. :)



반응형


반응형

인터넷으로 한겨레신문 보다 한겨레TV에서 오늘 새롭게 김어준의 KFC 가 시작된것을 발견..^^


또 하나 재밌는 시사 정보 프로그램을 볼 수 있겠구만.. :)


그동안 그나마 썰전을 보면서 한국 시사의 굶주림을 채웠었는데... ^^

KFC - Kentucky Flied Chicken : 켄터키에서 날았던 적이 있는 닭..


이 부분 너무 웃겼어... ^^




[김어준의 KFC#1] 어준의 귀환! “닭을 열심히 튀기겠습니다.”

시사·보도김어준의 KFC 2014년 03월 15일 1:08 이경주 피디

한겨레TV의 새로운 시사쇼! [김어준의 KFC]
왜 ‘KFC’이냐구요? ‘김어준의 뉴욕타임스’처럼 아무 이유가 없습니다.
그 의미는 시청자 여러분의 몫이니까요.


#1. KFC 이슈브리핑
“구미시를 '박정희시'로 바꾸자.”
박정희시라고 하면 외국에 더 잘 알릴 수 있어 수출에 도움이 될 거라고...
그럼 일본수출을 늘리기 위해서는 박정희시 옆에
‘다카끼 마사오시’ 라고 쓰는 게 낫지 않을까요.


#2. 이슈토크: 국정원, 서울시 공무원 간첩 증거조작 사건 5라운드!


#3. 선대인의 참죠!경제 토크: 월세 과세 정책의 진실?


* 시청자 참여 *
정경사에서 문화, 예술, 연예사담까지~ 어떤 질문도 보내주세요!
공식 트위터 @sisakfc, 이메일 이경주 leepd@hani.co.kr


* 협찬 *
<선대인 미친 부동산을 말하다> (웅진지식하우스)

<정의의 적들> (한겨레출판)


진행: 김어준 총수/딴지일보
패널: 김보협 기자/한겨레, 송채경화 기자/한겨레, 선대인 선대인경제연구소 소장
게스트: 김용민 변호사, 유우성 전 서울시 공무원
기획연출: 이경주, 작가: 서정원, 종합편집: 문석진 이규호, 기술감독: 박성영, 디지털편성: 박종찬


댓글이나 달면서 불법으로 특정 정당 선거운동하고...


남의 나라 공문서까지 위조하고 그걸 우리나라 재판장에 버젓이 증거로 내밀어 국제 망신 시키고...


이게 대한민국의 정보기관이야?


그런 국정원이 존재할 필요가 있는거야?


여태까지 한국 재판과정에서 중국 정부에 확인 요청한 건 중 중국 정부에서 응답한 전례가 없었다는데...


그래서 검찰/국정원이 짜고 이렇게 버젓이 중국 공문서를 위조해서 우리나라 정식 재판에 증거로 내밀었을 거라던데...


중국 정부에서 뜻밖에 회답을 줘서 얼마나 놀랐을까? ^^


관련된 국정원 직원놈들 검찰놈들 다 국가 보안법 위반으로 깜빵 보내야 함... 반드시....






반응형


반응형

지난 주부터 새로운 팀에 소속돼서 일하고 있습니다.

전임자 일을 이어 받아서 Sprint 1 을 무사히 마치고 어제부터 Sprint 2 가 시작됐습니다.

여기서는 15일 단위로 Sprint 를 나눠서 일을 진행하고 있습니다.


지금 일하고 있는 곳에서는 Agile business를 위해서 Rally Software를 사용하고 있습니다.

사용한지 며칠 안 됐지만 직관적이고 꽤 사용이 편리한 것 같더라구요.


Rally 전에는 HP에서 나온 ALM (Application Lifecycle Management)를 사용했는데.. 아마 Rally로 점차 이동하고 있나 봅니다.


지금은 ALM은 Manual Test 관리와 Defect 관리용으로만 사용하고 있고 주요 작업인 Automation testing 과 관련한 lifecycle 관리는 Rally에서 하고 있습니다.


저도 Rally에 대해 좀 더 알아보려고 Rally 홈페이지에 가 봤는데요.


그 홈페이지 중 about Rally 페이지에 있는 글을 소개해 드리겠습니다.





Your Agile Business Partner


In a world driven by software, we are convinced that Agile can help accelerate the pace of innovation so that companies create products users love.  At Rally, we are absolutely dedicated to making your entire company faster, leaner and more Agile. In fact, we think helping you be "on time and on budget" is a pretty low bar for success. We want you to consistently win product awards. We want to spike your net promoter score. We want you to be in control of your own destiny, because no matter how fast things change, you will have the speed and agility to create your next generation of growth.


소프트웨어로 운영되는 세상에서, 우리는 Agile 이 혁신의 속도를 더욱 가속시키는데 도움을 주고 회사는 이용자들의 사랑을 받는 제품을 창조할 수 있다고 확신합니다. Rally를 통해 우리는 여러분 회사 업무 전체를 훨씬 더 Agile 방법에 의해 훨씬 더 신속하게 처리될 수 있도록 도와 드립니다. 궁극적으로 저희들이 도와드리려고 하는 것은  "on time and on budget" 으로서 성공에 이르는 아주 기본적인 요소 입니다. 저희는 고객님들이 꾸준히 성공적인 사업을 이어나갈 수 있기를 바랍니다. 여러분의 실적 신장에 실질적인 도움을 드리고 싶습니다. 여러분의 목표를 향해 나아가는데 도움을 드리고 싶습니다. 모든것이 빨리 변해가는 세상에서 Rally는 여러분 회사가 한단계 더 도약할 수 있는 speed와 agility(민첩성)을 제공합니다.


Rally helps you go Agile.  And we really mean help.  We've never been only an award-winning software vendor whose cloud-based products and platform give companies what they need to steer corporate strategy, run their development lifecycle, and expand team collaboration. We keep going.


Rally는 여러분을 Agile로 가는 길을 도와 드립니다. 저희는 단지 cloud-based 제품에서 software vendor로서 수상한 경력만 가지고 있는 것이 아닙니다. 저희들은 고객님들의 전략적인 방향을 조타수의 역할을 하고 고객님들의 개발 lifecycle을 운영하고 팀들간 그리고 팀 내의 collaboration을 확장하는데 실질적인 도움을 드리고 있습니다. 저희들은 계속 이러한 도움을 드릴 것입니다.



We’re an Agile partner with a team of Agile coaches and comprehensive training services that help your teams and leaders navigate the organizational change required to become a great, innovative, Agile business. Forrester Research summed it up more modestly, saying, "Rally's leadership rests with its breadth and depth of capabilities for Agile teams, combined with a strong and focused corporate strategy."


저희는 Agile coach를 해주는 팀으로서 좋은 Agile 파트너 입니다. 그리고 여러분의 팀과 리더들을 도와 더 성장하고, 혁신적이고 Agile business에 맞도록 조직을 변화시킬 수 있는 포괄적인 training 서비스이기도 합니다. 회사의 strategy를 더 강화 집중시키는데 Rally가 함께 합니다.


We think holistically about all the collaboration it takes to get valuable ideas to market.  But a more traditional view of Rally comes from important industry analysts who describe us (in the nicest terms) as helping disrupt their technology categories of Application Lifecycle Management (ALM) and Project/Program Portfolio Management (PPM).  You can even read all about the evaluations Forrester Research did of Rally vs 9 ALM vendors and 10 PPM vendors, if you want, for free.


우리는 collaboration이 시장에 더 가치 있는 아이디어를 가져다 준다는 것에 대해 의미있게 생각합니다. 저희를 표현하는 주요 industry 분석가들은 ALM(Application Lifecycle Management) 와 PPM(Project/Program Portfolio Management) 라는 분야를 없애고 있는 제품이라고 평가하고 있습니다. Forrester Research 가 Rally 대 9개의 ALM vendor들과 10개의 PPM 벤더들을 평가한 글을 참고하시기 바랍니다.


OK. But what can your company really expect from choosing Rally as your Agile business partner?


자 그럼 여러분의 Agile business partner로서 Rally를 선택하시면 여러분 회사에 어떤 효과를 기대할 수 있을까요?


The best way to learn about Rally is to hear from our customers. We are proud to serve 192,000 users, including 34 of the Fortune 100 companies. You can check out some of our customers in these quotes and videos or attend one of our events when we visit a city near you.


Rally에 대해서 알 수 있는 가장 좋은 방법은 저희들의 고객들로부터 듣는 것입니다. 저희들은 Fortune 100 companies에 속해 있는 34개의 회사를 포함해서 총 192000 업체를 고객으로 모시고 있습니다. 링크를 클릭하시면 저희들의 고객님들의 평가와 비디오를 보실 수 있습니다. 또는 저희들이 여러분이 계시는 근처 도시에서 소개행사를 열 때 참석하실 수도 있습니다.


Why Go Agile?

Building a great, Agile business is not easy - though most find it's easier to produce great, innovative products when you use Agile practices. Put simply, Agile shortens development cycles. It minimizes all types of risks, roots out waste, and it ensures you are always working on the most important needs of the business. For the benchmarking set, an independent study by QSMA showed Rally customers had 50% faster time-to-market than their industry peers. These companies also measured a 25% increase in productivity and saw only 1/4 the expected defect counts.


Agile 방법을 사용하면 향상된 제품과 혁신적인 제품들을 더욱 쉽게 만들어 낼 수 있음에도 불구하고 Agile business는 그렇게 쉽지 않습니다. 간단하게 말해서 Agile은 development cycles를 단축시킵니다. 그리고 모든 종류의 risk들과 waste의 근본적인 원인들을 최소화 시킵니다. 그리고 항상 가장 중요한 business의 needs에 대해 일할 수 있도록 해 줍니다. QSMA의 연구 조사에 따르면 Rally 고객들은 다른 경쟁사들에 비해 50% faster time-to-market 효과를 가져왔습니다. 이 조사대상 Rally 고객사들은 25%의 생산성 향상과 1/4의 defect counts를 보이고 있습니다.


It's Your Move


If you're ready to adopt or expand your Agile and Lean efforts, Forrester made deciding whom to partner with pretty easy... here is their Agile vendor evaluation report. You can also contact us and talk to smart people about your efforts and how Rally's products and Agile services can make your life easier.


만약 여러분이 Agile을 받아들이시거나 더 확장하시려고 한다면 누가 그 파트너가 되어야 하는지 Forrester 가 도와 드릴 것입니다. 이 링크를 보시면 Agile vendor evaluation report 가 있습니다. 또한 저희들에게 직접 연락하셔도 됩니다. Rally와 Agile service가 얼마나 여러분의 생활을 쉽게 만들 수 있는지에 대해 말씀해 드리겠습니다.


If you're still learning about how Agile and Lean would fit in your company, then browse our famous educational materials. At a minimum, you'll probably get a lot out of tracking Rally's Agile Blogs led by our Founder/CTO Ryan Martens and Agile Fellow Jean Tabaka, with contributions from our Agile coaches, engineers, product owners; even our Agile marketing teams.


만약 여러분 회사에 어떻게 Agile과 Lean을 도입해서 사용할 수 있을가에 대해 더 알고 싶다면 저희들의 요명한 educational materials를 보시기를 바랍니다. 또한 Rally의 여러 Agile Blogs 들을 보시면 다양한 정보를 얻으실 수 있습니다. 저희의 Founder/CTO Ryan Martens와 Agile Fellow Jean Tabaka 가 lead 하고 많은 Agile coache들과 engineer 그리고 product owner들이 참여하고 있습니다. 저희 회사의 Agile marketing team도 참여하고 있습니다.


Oh, and we are always looking to add super-talented people to the Rally team. We keep growing and would love to meet you. Named as #8 on Fortune Magazine's Best Medium-Sized Workplaces list, and ranked as a Best Place to Work in the Nation by Outside Magazine four times, Rally offers a highly collaborative culture and work-life balance that attracts top talent.


그리고 저희 Rally team 에서는 언제나 능력있는 분들을 찾고 있습니다. 저희는 지속적으로 성장하는 회사이고 당신을 만나고 싶습니다. Fortune지의 Best Medium-Sized Workplace 리스트에서 8위를 차지했습니다. 그리고 외부 잡지에서 가장 일하고 싶은 곳에 4번이나 rank 됐었습니다. Rally는 훌륭한 인재들이 매력을 가질만한 highly collaborative culture와 work-life balance를 제공합니다.


반응형

'TDD Project > Rally' 카테고리의 다른 글

Manifesto for Agile Software Development  (0) 2022.04.29
[Rally] Create and Customize Fields  (0) 2016.02.03
Test Module in Rally  (0) 2016.01.13
[Agile] Sprint Retrospective  (0) 2014.08.27


반응형

Selenium WebDriver로 테스트를 작성하다 보면 웹화면 입력할 데이터를 Testsuit(XML) 에 정의하고 그것을 받아서 일을 처리하는 경우가 많습니다.


데이터량이 많을 경우에는 많은 파라미터를 사용해야 하는데 그러면 번거로우니까 특정 문자로 데이터들을 구분하고 그것을 JAVA 파일에서 분리해서 배열에 담아 사용하면 편리한데요.


<parameter name="teststring" value="Hong|Gildong|Seoul|34|Male"/>


Test Suite 에 위와 같이 돼 있는 경우 자바 파일에서는 아래와 같이 사용할 수 있습니다.


@Parameters({"teststring"})


우선 teststring 파라미터를 위와 같이 지정하고.


public void testSplitString(String msg) throws Exception {
        List<String> msgList=Arrays.asList(msg.split("\\|"));
        otherClass.methodInOtherClass(msgList);
    }


이렇게 코드가 작성됩니다.


그러면 "|" 문자를 기준으로 Hong, Gildong, Seoul, 34, Mail 이 분리되서 msgList 에 담기고 이 리스트를 다른 비지니스를 구현하는 클래스의 해당 메소드로 패스해서 일을 처리하게 됩니다.



Split 이라는 유명한 관광지가 있나 봅니다. 크로아티아에....


Java - String split() Method


Description:


이 메소드는 2개의 variant를 가지고 있고 주어진 regular expression에 따라 String을 split 합니다.


Syntax:


이 메소드의 신택스는 아래와 같습니다.


public String[] split(String regex, int limit)

or

public String[] split(String regex)

Parameters:


아래는 파라미터들에 대한 설명입니다.

  • regex -- 구분 기준이 되는 regular expression.

  • limit -- return 될 String의 갯수 (result threshold)


Return Value:

  • 주어진 regular expression에 따라 String을 split 한 다음에 array를 return 하게 됩니다.


Example:


import java.io.*;

public class Test{
   public static void main(String args[]){
      String Str = new String("Welcome-to-Tutorialspoint.com");

      System.out.println("Return Value :" );
      for (String retval: Str.split("-", 2)){
         System.out.println(retval);
      }
      System.out.println("");
      System.out.println("Return Value :" );
      for (String retval: Str.split("-", 3)){
         System.out.println(retval);
      }
      System.out.println("");
      System.out.println("Return Value :" );
      for (String retval: Str.split("-", 0)){
         System.out.println(retval);
      }
      System.out.println("");
      System.out.println("Return Value :" );
      for (String retval: Str.split("-")){
         System.out.println(retval);
      }
   }
}


이렇게 하면 아래와 같은 결과를 얻을 수 있습니다.


Return Value :
Welcome
to-Tutorialspoint.com

Return Value :
Welcome
to
Tutorialspoint.com

Return Value:
Welcome
to
Tutorialspoint.com

Return Value :
Welcome
to
Tutorialspoint.com



반응형


반응형

내가 사용하는 이메일 계정 중 구글 이메일(Gmail) 과 Yahoo 메일이 해킹 당한 것 같다.


오늘 야후메일로 내 야후 계정에서 이메일로 이상한 링크를 보냈더라구.

(야후 계정이 두개인데 해킹당한 계정에서 당하지 않은 계정으로 메일 보냄)


From 이 해킹당한 야후계정인데...

To 리스트를 보고 더 놀랐어...



내가 아는 이메일 주소들이 18개나 To에 있었어.. 와~~~~~

자세히 보니까 그 해킹당한 이메일하고 연락했던 이메일들이더라구..


회사 이메일도 있고... 가족 이메일도 있고..


한국에서도 개인정보가 많이 도난 당했다고 그러고... 미국에서도 몇달전 Target 에서 거래한 신용카드정보가 다 해킹 당했다고하고.. 하는데...


내 미국 이메일 계정만 있는걸로 봐서 미국에서 도난당한 신용카드 정보가 새 나간거 아닌가 생각되네.....

(뭐 한국 이메일로는 아직 이상한 메일이 안 온 것 뿐인지도 모르지....)


도난 당한 기간에 내가 Target에서 신용카드 거래가 있어서 Chase 은행에서 카드도 바꿔주고 그랬거든....

하여간 이번 일을 통해서 야후와 구글의 대응방식이 비교되서 흥미로웠어.


대응방식은 구글이 단연 압승...


크롬 브라우저를 사용할 때 윗쪽에 alert message가 뜨더라구.

내 어카운트로 의심되는 접속 시도가 있었다는 내용이었고 그걸 누르면 언제 어디서 내 계정으로 접속 시도가 있었는데 내가 한건지 확인하라고 하는데...


내가 가보지도 않은 텍사스나 샌프란시스코 뭐 이런데서 접속 시도가 있었더라구...


그리고 이메일로도 같은 내용으로 메일이 오고 이게 hijacker 가 시도한 접속이라면 패스워드를 바꾸라고 해서 잽싸게 비밀번호를 바꿨지...


반면에 야후는 별다른 경고도 없었어...

그러다가 이상한 메일이 온거지...

그 링크 누르면 어떻게 되는지는 모르겠지만 다른 사람들이 내 메일 받고 그 링크 안 누르길....


하여간 이번 건은 구글 메일이 야후 메일에 단연 압승....

반응형

[JAVA] getInstance() 와 관련해서....

2014. 3. 11. 14:42 | Posted by 솔웅


반응형

우리 팀에서 관리하는 어플리케이션 중에 Oracle에서 Teradata로 데이터 migration 하는 작업을 도와주는 어플리케이션이 있습니다. 데이터를 옮기는 건 아니고 옮긴 후 두 데이터를 비교해 주는 어플리케이션 인데요.

사용자들이 두 데이터를 비교할 때 데이터를 trim 한 후에 비교해 달라고 하는 요청이 들어왔습니다.

제가 관리하는 어플리케이션은 아니지만 담당자가 어떻게 처리하나 유심히 봤거든요.

담당자는 singleton을 이용하더라구요.

해당 값들을 갖고 있는 custom 객체가 Singleton 패턴으로 선언 됐더라구요.

저는 custom 객체 선언 부분은 안 보고 로직 있는 부분에서만 찾으려고 하다가 헤맸는데 인도에 있는 담당자는 깔끔하게 처리했더라구요.

오늘 한가지 배웠습니다. ^^

customobject test = customobject.getInstance(value.toString().trim());

해당 object 에 getInstance 메소드가 있으면 Singleton 방식으로 객체를 관리 하는 것이고 안의 value를 관리하고 싶으면 이 getInstance를 사용해서 관리하면 됩니다.

하나 배운김에 Singleton 클래스에 대해 확실하게 배우고 가려고 누군가가 올려 놓은 tutorial 하나 보고 갑니다.



Java - How to use Singleton Class ?

Singleton은 객체 생성을 control 하기 위한 목적으로 사용됩니다. 객체의 갯수를 오직 하나로 제한하죠. 한개의 Singleton instance가 있으면 Singleton의 instance 필드들은 한개의 클래스에 한번만 발생하게 됩니다. static 필드와 비슷하죠. Singleton은 종종 데이터베이스 커넥션이나 socket 연결 등에 사용 됩니다.


예를 들어 데이터베이스에 한개의 connection만 가능할 때 JDBC로 multithreading을 하다 보면 문제가 발생할 수 있습니다. 이 Singleton은 한번에 한개의 connection혹은 한개의 thread 만 만들어 지도록 관리를 할 수 있습니다.



Implementing Singletons:

Example 1:


제일 쉽게 구현하는 방법은 private 생성자와 필드를 만들어서 result를 hold 하는 방법입니다. 그리고 static accessor method 를 getInstance() 같은 이름으로 만들어서 사용합니다.

private field는 static initializer block안에서 할당 될 수 있습니다. getInstance() 메소드는 반드시 public이어야 하고 여기서 해당 instance를 return 합니다.


// File Name: Singleton.java
public class Singleton {

   private static Singleton singleton = new Singleton( );
   
   /* A private Constructor prevents any other 
    * class from instantiating.
    */
   private Singleton(){ }
   
   /* Static 'instance' method */
   public static Singleton getInstance( ) {
      return singleton;
   }
   /* Other methods protected by singleton-ness */
   protected static void demoMethod( ) {
      System.out.println("demoMethod for singleton"); 
   }
}


아래에 singleton 객체를 생성할 main program file 이 있습니다.

// File Name: SingletonDemo.java
public class SingletonDemo {
   public static void main(String[] args) {
      Singleton tmp = Singleton.getInstance( );
      tmp.demoMethod( );
   }
}


그 결과는 아래와 같을 겁니다.

demoMethod for singleton







Example 2:

아래는 고전적인 Singleton 디자인 패턴입니다.

public class ClassicSingleton {

   private static ClassicSingleton instance = null;
   protected ClassicSingleton() {
      // Exists only to defeat instantiation.
   }
   public static ClassicSingleton getInstance() {
      if(instance == null) {
         instance = new ClassicSingleton();
      }
      return instance;
   }
}


ClassicSingleton 클래스는 singleton 인스턴스를 static reference로 관리 합니다. 그리고 그 reference를 static getInstance() 메소드에서 반환을 하죠.

여기의 ClassicSingleton 클래스는 singleton;을 생성하는데 lazy instantiation이라고 알려진 방법을 사용합니다. singleton 인스턴스는 getInstance()가 첫번째로 호출되기 전까지는 생성되지 않습니다. 이 방법은 singleton이 필요한 때에만 생성이 되도록 합니다.

반응형


반응형

어제 필터링 한 후 Range 내의 Row의 갯수를 구하는 방법을 알아 봤는데요.


레인지.SpecialCells(xlCellTypeVisible).Rows.Count


이게 필터링을 여러 조합으로 하고 난 후 제대로 작동을 안 하는 경우가 있더라구요.


그래서 이 방법 말고 For 문을 돌려서 Row의 갯수를 구했습니다.


   CRRCnt = 0
   
    For Each Cell In 레인지.SpecialCells(xlCellTypeVisible).Cells
            CRRCnt = CRRCnt + 1
            'Debug.Print CRRCnt
    Next


CRRCnt라는 Integer 를 정의하고 난 후 Range의 보이는 Cell들을 For 문을 돕니다.

제 경우는 Range가 한개의 field안에 있어서 이렇게 했는데요.


더 정확하게 하려면 Cell이 아니라 Rows로 for 문을 돌려야겠군요.

이렇게는 확인을 안 해 봤습니다.

이번 작업의 경우엔 저렇게 하면 되기 때문에 그냥 Cells를 For 문을 돌렸습니다.


이렇게 For 문을 돌리면서 CRRCnt를 하나씩 증가시키면 필터링 한 후 레인지 내의 보이는 Row 수를 구할 수 있습니다.


레인지.SpecialCells(xlCellTypeVisible).Rows.Count 가 생각대로 제대로 작동하지 않으면 위와같이 해결하면 됩니다.



반응형


반응형

원래 이 Tip 도 지난 글과 같이 올리려고 했는데 애초 생각과 다르게 이전에 만들어 놨던 다른 component들까지 다 정리하는 바람에 따로 정리하게 됐습니다.


Sub 평균구하기함수()

    Dim firstCell As Range
    Dim lastCell As Range
    Dim lastRow As Double
    Dim rngtest As Range
    Dim 평균 As String

    Call clickLink("Cell주소")

    ''''''' get the first Cell to calculate
    Set firstCell = getBelowCell2("필드이름1")
   
    ''''''' get the last row to calculate
    lastRow = activateLastrow2Cal2("필드이름2")
    
    ''''''' get the last Cell to calculate
    Set lastCell = firstCell.Offset(lastRow - firstCell.Row, 0)
   
    Call filterOption("필드이름3", "1")
    Call filterOption("필드이름4", ">0")
   
    ' Get count of rows
    Set rngtest = Range(firstCell, lastCell)
    rngtest.Select
   
    평균 = WorksheetFunction.Average(rngtest.SpecialCells(xlCellTypeVisible))
   
    Call writeTable5("Sheet 이름", 0, 0, 평균 , "K11")

End Sub



위에 한글로 표기한 것은 해당 엑셀에 맞춰서 적당한 값을 넣어야 하는 겁니다.

변수명이나 필드이름 등은 회사 업무와 관련이 있는 거라서 회사 업무 내용을 공개하지 않기 위해 이름을 변경했습니다.


여기서 살펴볼 것은 아래 라인 입니다.


평균 = WorksheetFunction.Average(rngtest.SpecialCells(xlCellTypeVisible))


나머지는 이전 글에 각 함수 내용을 올려 놓았으니 그 글을 참조하시면 됩니다.

진행 순서도 똑 같구요.

필터링 후 선택된 Range의 평균을 구하는 것은 WorksheetFunction.Average(레인지.SpecialCells(xlCellTypeVisible)) 를 사용하면 됩니다.


결과 값은 String에 담구요.

이걸 Integer나 Double에 담아봤더니 에러가 나더라구요.

Converting을 해서 담던가 아니면 그냥 String 변수에 담아야 합니다.


한가지 더 참조한다면 아래 라인 입니다.


Call filterOption("필드이름4", ">0")


greater than 0 로 필터링을 어떻게 할 까 궁금했는데 그냥 위와 같이 >0 을 전달하면 되는군요.

filterOption() 함수는 이전 글에 있으니 보시고 싶으시면 바로 전 글을 보시면 됩니다.



반응형
이전 1 2 다음