IT인들을 위한 건강챙기기 팁

씨디팔공/팁 2017.03.30 09:24
크리에이티브 커먼즈 라이선스
Creative Commons License

일찍자고 일찍 일어나는데 하루하루 체력이 좀비같고 아침에 일어나기도 힘들다가

아래 있는것들을 챙기고서부터 아침이 편해지고 집중이 잘돼서 소개합니다


[비타민 B]

처음엔 구내염때문에 먹었었는데 피로회복에 장난아니게 좋습니다

유명한 제품으로는 아로나민골드랑 같은회사에서 나온 엑세라민이 있는데


회사앞약국약사 : 아로나민은 두번 먹어야 하는데 엑세라민은 한번만 먹어도 돼요 엑세라민 한번 드셔보세요

우리엄마(약사) : 아로나민 골드가 제일 좋다. 엑세라민이 마진이 좀더 남아서 추천해준거다


이렇게 두 약사의 의견이 갈리는데

최고의 효과를 원한다면 아로나민 골드를 아침저녁으로 챙겨먹는게 낫고 저처럼 귀찮아서 그냥 아침에 먹고 말래 한다면 엑세라민이 낫습니다 그래서 전 엑세라민을 먹습니다



[오메가3]

오메가3는 인터넷에도 많긴한데 왠만하면 약국가서 사는게 낫습니다 약국에 좋은 제품이 많아요

오메가3는 혈액순환 개선이 도움이 많이 되는데

운동안해서 혈액순환 잘 안되는건 어쩔수 없다고 해도 

담배 + 술 + 기름진음식(고기, 튀김) 이 조합으로 혈액순환 안되는건 정말 지옥입니다

이렇게 운동 외적인 요인으로 혈액순환 안되는걸 최대한 살려주는게 오메가3입니다


[유산균]

유산균도 먹는방법이 여러가지가 있는데

알약으로 먹을수도 있고 가루로도 있고 액상도 있습니다

저는 가루로 먹는데

유산균은 장운동을 활발하게 하고 면역력을 슈퍼 좋게 해준다고 합니다

아침에 황금색 바나나똥 볼 수 있습니다

제가 먹는건 대웅제약 락피더스 입니다



[생식]

아침에 밥먹기는 귀찮고 뭔가 건강은 챙겨야할것 같고 할 때 생식 먹으면 좋습니다

http://item2.gmarket.co.kr/Item/detailview/Item.aspx?goodscode=909699985

전 이거 먹는데 좋습니다 매주 한 통씩 사서 먹습니다

이거 살 때 컵을 같이사서 생식 타먹은다음에 설거지 귀찮으니까 그 컵에 그냥 하루종일 물 마시면 됩니다

인터넷에 쳐보면 생식이 좋지 않을수도 있다고 하는데 우리엄마가 좋댔으니 개좋습니다



[물 2리터]

물 정말 중요합니다

물 하루에 2리터짜리 한병씩 계속 먹은지 다섯달정도 됐는데

코딩하다가 아 집중안돼 하는 순간은 대부분 수분부족입니다

물 좀 먹고 코딩하다가 집중안될때 물마시면 바로 다시 집중 개잘됩니다

물 2리터씩 맨날 먹으면 몸이 좋아지는게 체감됩니다

물 2리터짜리 6개 들이가 3천원, 삼다수는 6천원이니까

그냥 월요일 출근하실때 6개들이 하나 사서 하루종일 옆에 놓고 집중안될때마다 드시면 8시간이면 2리터 다먹습니다

그리고 더 좋은건 제가 이걸로 금연 성공했습니다

물 많이 마시면 노폐물이 많이 배출된다고 하는데 물을 계속 먹으면 화장실을 주기적으로 가게 됩니다

근데 초기에는 물을 좀 마시고 한 오후 두세시쯤부터 화장실을 가기 시작했는데

요즘은 오전부터 바로 화장실을 계속 가게 되는 변화도 생기고 그렇습니다

긍정적인 변화일꺼라 생각하고 있는데 사실 잘은 모릅니다 ㅋㅋ



[간보호제]

이거 특히 또 중요하죠

특히 술,담배 많이 하시는 분들은 간보호제 꼭 챙겨먹지 않으면 미래가 참혹합니다

밀크씨슬이 제일 유명한데 많이 드시는분들은 꼭 고함량으로다가 드세요

전 녹십자에서 나온 실리웰 골드 먹습니다


[남성건강]

민망한 주제여서 맨 마지막에 씁니다

민망하긴 하지만 이게 중년층만 적용되는게 아니고

10대 20대 30대여도 관리하지 않으면 위험합니다

남성호르몬이 간에서 분비되는 것으로 알려져 있는데 술 많이 드시는 분들도 위험하겠죠

남성호르몬에 좋은걸로는 유명한게 많은데 뭐 산수유, 야관문, 복분자, 아연, 홍삼 이런것들이 다 좋다고 돼있는데 하나하나 다 챙겨먹기는 어렵고 그냥 종합으로 돼있는거 먹는게 편합니다

저는 황기단이랑 흑마늘먹는데 확실히 좋습니다(체력에)


[잠]

잠좀잡시다

신고

'씨디팔공 > ' 카테고리의 다른 글

IT인들을 위한 건강챙기기 팁  (2) 2017.03.30
LLVM 인스트럭션 타입이랑 같이 출력  (0) 2016.06.10

설정

트랙백

댓글

LLVM 인스트럭션 타입이랑 같이 출력

씨디팔공/팁 2016.06.10 14:29
크리에이티브 커먼즈 라이선스
Creative Commons License

도저히 인스트럭션이 llvm api상에서 무슨 타입인지 알수가 없어서 만들었습니다, 이 코드를 적용하면서 코드를 작성한 저도 제가 작업하는 LLVM버젼에 적용하면서 아주 약간 수정하면서 썼으니 필요에 따라 수정하면서 쓰시면됩니다

예를들어 LandingPadInst에서 and가 지워지고 LingPadInst 로 돼있습니다

이 글을 작성(6월 10일)하고 코드에 문제가 좀 있어서 공개를 안하고 있었는데 LLVM글 작성을 시작하면서 공개(7월 15일) 했습니다

inst_types = ['AddrSpaceCastInst', 'BitCastInst', 'PtrToIntInst', 'IntToPtrInst', 'FPToSIInst', 'FPToUIInst', 'SIToFPInst', 'UIToFPInst', 'FPExtInst', 'FPTruncInst', 'SExtInst', 'ZExtInst', 'TruncInst', 'UnreachableInst', 'CleanupReturnInst', 'CatchReturnInst', 'CatchPadInst', 'CleanupPadInst', 'CatchSwitchInst', 'ResumeInst', 'InvokeInst', 'IndirectBrInst', 'SwitchInst', 'BranchInst', 'ReturnInst', 'LingPadInst', 'PHINode', 'InsertValueInst', 'ExtractValueInst', 'ShuffleVectorInst', 'InsertElementInst', 'ExtractElementInst', 'VAArgInst', 'SelectInst', 'CallInst', 'FCmpInst', 'ICmpInst', 'FuncletPadInst', 'CmpInst', 'GetElementPtrInst', 'CastInst', 'AtomicRMWInst', 'AtomicCmpXchgInst', 'BinaryOperator', 'FenceInst', 'StoreInst', 'InstrProfValueProfileInst', 'InstrProfIncrementInst', 'VACopyInst', 'VAEndInst', 'GCRelocateInst', 'UnaryInstruction', 'VAStartInst', 'MemMoveInst', 'LoadInst', 'MemCpyInst', 'MemTransferInst', 'MemSetInst', 'MemIntrinsic', 'AllocaInst', 'DbgValueInst', 'DbgDeclareInst', 'TerminatorInst', 'DbgInfoIntrinsic', 'IntrinsicInst']
cpp_code = "void printInstWithType(Instruction inst){\n"
for inst_type in inst_types:
	cpp_code += ("""
	if(isa<%s>(inst)){
		errs() << "[%s] " << inst << "\\n";
	}
"""%(inst_type, inst_type))[1:]
cpp_code += "}"
print cpp_code
void printInstWithType(Instruction inst){
	if(isa<AddrSpaceCastInst>(inst)){
		errs() << "[AddrSpaceCastInst] " << inst << "\n";
	}
	if(isa<BitCastInst>(inst)){
		errs() << "[BitCastInst] " << inst << "\n";
	}
	if(isa<PtrToIntInst>(inst)){
		errs() << "[PtrToIntInst] " << inst << "\n";
	}
	if(isa<IntToPtrInst>(inst)){
		errs() << "[IntToPtrInst] " << inst << "\n";
	}
	if(isa<FPToSIInst>(inst)){
		errs() << "[FPToSIInst] " << inst << "\n";
	}
	if(isa<FPToUIInst>(inst)){
		errs() << "[FPToUIInst] " << inst << "\n";
	}
	if(isa<SIToFPInst>(inst)){
		errs() << "[SIToFPInst] " << inst << "\n";
	}
	if(isa<UIToFPInst>(inst)){
		errs() << "[UIToFPInst] " << inst << "\n";
	}
	if(isa<FPExtInst>(inst)){
		errs() << "[FPExtInst] " << inst << "\n";
	}
	if(isa<FPTruncInst>(inst)){
		errs() << "[FPTruncInst] " << inst << "\n";
	}
	if(isa<SExtInst>(inst)){
		errs() << "[SExtInst] " << inst << "\n";
	}
	if(isa<ZExtInst>(inst)){
		errs() << "[ZExtInst] " << inst << "\n";
	}
	if(isa<TruncInst>(inst)){
		errs() << "[TruncInst] " << inst << "\n";
	}
	if(isa<UnreachableInst>(inst)){
		errs() << "[UnreachableInst] " << inst << "\n";
	}
	if(isa<CleanupReturnInst>(inst)){
		errs() << "[CleanupReturnInst] " << inst << "\n";
	}
	if(isa<CatchReturnInst>(inst)){
		errs() << "[CatchReturnInst] " << inst << "\n";
	}
	if(isa<CatchPadInst>(inst)){
		errs() << "[CatchPadInst] " << inst << "\n";
	}
	if(isa<CleanupPadInst>(inst)){
		errs() << "[CleanupPadInst] " << inst << "\n";
	}
	if(isa<CatchSwitchInst>(inst)){
		errs() << "[CatchSwitchInst] " << inst << "\n";
	}
	if(isa<ResumeInst>(inst)){
		errs() << "[ResumeInst] " << inst << "\n";
	}
	if(isa<InvokeInst>(inst)){
		errs() << "[InvokeInst] " << inst << "\n";
	}
	if(isa<IndirectBrInst>(inst)){
		errs() << "[IndirectBrInst] " << inst << "\n";
	}
	if(isa<SwitchInst>(inst)){
		errs() << "[SwitchInst] " << inst << "\n";
	}
	if(isa<BranchInst>(inst)){
		errs() << "[BranchInst] " << inst << "\n";
	}
	if(isa<ReturnInst>(inst)){
		errs() << "[ReturnInst] " << inst << "\n";
	}
	if(isa<LingPadInst>(inst)){
		errs() << "[LingPadInst] " << inst << "\n";
	}
	if(isa<PHINode>(inst)){
		errs() << "[PHINode] " << inst << "\n";
	}
	if(isa<InsertValueInst>(inst)){
		errs() << "[InsertValueInst] " << inst << "\n";
	}
	if(isa<ExtractValueInst>(inst)){
		errs() << "[ExtractValueInst] " << inst << "\n";
	}
	if(isa<ShuffleVectorInst>(inst)){
		errs() << "[ShuffleVectorInst] " << inst << "\n";
	}
	if(isa<InsertElementInst>(inst)){
		errs() << "[InsertElementInst] " << inst << "\n";
	}
	if(isa<ExtractElementInst>(inst)){
		errs() << "[ExtractElementInst] " << inst << "\n";
	}
	if(isa<VAArgInst>(inst)){
		errs() << "[VAArgInst] " << inst << "\n";
	}
	if(isa<SelectInst>(inst)){
		errs() << "[SelectInst] " << inst << "\n";
	}
	if(isa<CallInst>(inst)){
		errs() << "[CallInst] " << inst << "\n";
	}
	if(isa<FCmpInst>(inst)){
		errs() << "[FCmpInst] " << inst << "\n";
	}
	if(isa<ICmpInst>(inst)){
		errs() << "[ICmpInst] " << inst << "\n";
	}
	if(isa<FuncletPadInst>(inst)){
		errs() << "[FuncletPadInst] " << inst << "\n";
	}
	if(isa<CmpInst>(inst)){
		errs() << "[CmpInst] " << inst << "\n";
	}
	if(isa<GetElementPtrInst>(inst)){
		errs() << "[GetElementPtrInst] " << inst << "\n";
	}
	if(isa<CastInst>(inst)){
		errs() << "[CastInst] " << inst << "\n";
	}
	if(isa<AtomicRMWInst>(inst)){
		errs() << "[AtomicRMWInst] " << inst << "\n";
	}
	if(isa<AtomicCmpXchgInst>(inst)){
		errs() << "[AtomicCmpXchgInst] " << inst << "\n";
	}
	if(isa<BinaryOperator>(inst)){
		errs() << "[BinaryOperator] " << inst << "\n";
	}
	if(isa<FenceInst>(inst)){
		errs() << "[FenceInst] " << inst << "\n";
	}
	if(isa<StoreInst>(inst)){
		errs() << "[StoreInst] " << inst << "\n";
	}
	if(isa<InstrProfValueProfileInst>(inst)){
		errs() << "[InstrProfValueProfileInst] " << inst << "\n";
	}
	if(isa<InstrProfIncrementInst>(inst)){
		errs() << "[InstrProfIncrementInst] " << inst << "\n";
	}
	if(isa<VACopyInst>(inst)){
		errs() << "[VACopyInst] " << inst << "\n";
	}
	if(isa<VAEndInst>(inst)){
		errs() << "[VAEndInst] " << inst << "\n";
	}
	if(isa<GCRelocateInst>(inst)){
		errs() << "[GCRelocateInst] " << inst << "\n";
	}
	if(isa<UnaryInstruction>(inst)){
		errs() << "[UnaryInstruction] " << inst << "\n";
	}
	if(isa<VAStartInst>(inst)){
		errs() << "[VAStartInst] " << inst << "\n";
	}
	if(isa<MemMoveInst>(inst)){
		errs() << "[MemMoveInst] " << inst << "\n";
	}
	if(isa<LoadInst>(inst)){
		errs() << "[LoadInst] " << inst << "\n";
	}
	if(isa<MemCpyInst>(inst)){
		errs() << "[MemCpyInst] " << inst << "\n";
	}
	if(isa<MemTransferInst>(inst)){
		errs() << "[MemTransferInst] " << inst << "\n";
	}
	if(isa<MemSetInst>(inst)){
		errs() << "[MemSetInst] " << inst << "\n";
	}
	if(isa<MemIntrinsic>(inst)){
		errs() << "[MemIntrinsic] " << inst << "\n";
	}
	if(isa<AllocaInst>(inst)){
		errs() << "[AllocaInst] " << inst << "\n";
	}
	if(isa<DbgValueInst>(inst)){
		errs() << "[DbgValueInst] " << inst << "\n";
	}
	if(isa<DbgDeclareInst>(inst)){
		errs() << "[DbgDeclareInst] " << inst << "\n";
	}
	if(isa<TerminatorInst>(inst)){
		errs() << "[TerminatorInst] " << inst << "\n";
	}
	if(isa<DbgInfoIntrinsic>(inst)){
		errs() << "[DbgInfoIntrinsic] " << inst << "\n";
	}
	if(isa<IntrinsicInst>(inst)){
		errs() << "[IntrinsicInst] " << inst << "\n";
	}
}


신고

'씨디팔공 > ' 카테고리의 다른 글

IT인들을 위한 건강챙기기 팁  (2) 2017.03.30
LLVM 인스트럭션 타입이랑 같이 출력  (0) 2016.06.10

설정

트랙백

댓글


티스토리 툴바