// Returns a <string, bool> pair. The string is the C++ type name to be used for
// attr_type when defining an object of that type. The bool is a flag to
// indicate whether to treat the type as const when accepting the C++ type as an
// argument to a function.
std::pair<const char*, bool> AttrTypeName(StringPiece attr_type) {
static const std::unordered_map<StringPiece, std::pair<const char*, bool>,
StringPiece::Hasher>
attr_type_map{
{"string", {"StringPiece", false}},
{"list(string)", {"gtl::ArraySlice<string>", true}},
{"int", {"int64", false}},
{"list(int)", {"gtl::ArraySlice<int>", true}},
{"float", {"float", false}},
{"list(float)", {"gtl::ArraySlice<float>", true}},
{"bool", {"bool", false}},
{"list(bool)", {"gtl::ArraySlice<bool>", true}},
{"type", {"DataType", false}},
{"list(type)", {"DataTypeSlice", true}},
{"shape", {"PartialTensorShape", false}},
{"list(shape)", {"gtl::ArraySlice<PartialTensorShape>", true}},
{"tensor", {"TensorProto", true}},
{"list(tensor)", {"gtl::ArraySlice<TensorProto>", true}},
{"func", {"NameAttrList", true}},
};
auto entry = attr_type_map.find(attr_type);
if (entry == attr_type_map.end()) {
LOG(FATAL) << "Unsupported Attr type: " << attr_type;
return {"", false};
}
return entry->second;
}
이게 원본 소스인데,
주석도 네이밍도 엉망진창임.
그리고 솔직히 텐서플로우의 Node 랑 그에 딸린 Attr 에 대해 알지 못하면 주석가지고 비빌수 있는 내용이 아님.
하지만 코드를 정리해 보았다.
using cpp_type_name = const char*;
using treat_as_const = bool;
using cpp_type_info = std::pair< cpp_type_name, treat_as_const >;
cpp_type_info ActualTypeInfo( StringPiece attr_type )
{
static const std::unordered_map< StringPiece, cpp_type_info, StringPiece::Hasher >
attr_type_map
{
{ "string", { "StringPiece", false } },
{ "list(string)", { "gtl::ArraySlice<string>", true } },
{ "int", { "int64", false } },
{ "list(int)", { "gtl::ArraySlice<int>", true } },
{ "float", { "float", false } },
{ "list(float)", { "gtl::ArraySlice<float>", true } },
{ "bool", { "bool", false } },
{ "list(bool)", { "gtl::ArraySlice<bool>", true } },
{ "type", { "DataType", false } },
{ "list(type)", { "DataTypeSlice", true } }, // 이렇게 정리하니까 얘만 특이한거 보임?
{ "shape", { "PartialTensorShape", false } },
{ "list(shape)", { "gtl::ArraySlice<PartialTensorShape>", true } },
{ "tensor", { "TensorProto", true } },
{ "list(tensor)", { "gtl::ArraySlice<TensorProto>", true } },
{ "func", { "NameAttrList", true } },
};
auto entry = attr_type_map.find( attr_type );
if( entry == attr_type_map.end() )
{
LOG( FATAL ) << "Unsupported Attr type: " << attr_type;
return { "", false };
}
return entry->second;
}
결국 하는 일 별거 아닌 코드임.
내부적으로 사용하는 alias 타입의 이름으로, 그에 대응되는 실제 cpp 타입의 정보를 얻는 것임.
추가로 상수 취급이냐 아니냐 플래그가 딸려 있는거고.
이런걸 왜 코드로 말 못하는데? 솔까말 저 위에 주석 보고 감이 오냐?
이따위가 좋은 예라니 어이없다.
애초에, 논하는 수준이 너무 저급한듯...
일회성이 뭐가 문제? return type enum 이랑 뭐가 다름?
들어 -> 드러나는거임.
얌마 그러면 템플릿 도배는 왜 하냐? 템플릿이 죄악이야?
타입 하나 느는게 뭐 바이너리에 영향을 끼쳐?
그래서 내가 그거 추가한다고 주석보다 글씨가 많아?
그나마도 return type 은 소스코드에 두 번 사용되거든?
니 눈에 std::pair<const char*, bool> AttrTypeName(StringPiece attr_type) { 이게 명시적이냐
cpp_type_info ActualTypeInfo( StringPiece attr_type ) 이게 명시적이냐
일회성이 뭐가문제냐고 물어보시는걸봐선 방대한 코드를 어지간히 안다뤄봤다는소리같내요
양심에 손을 얹고 말해. 찌질한 소리 계속하지 말고.
얌마 개소리 치우고 소스코드 갖고와 너 안되겠다.
프로젝트 전체통틀어서 그렇게 다 alias로 빼면 주석만큼 안늘거라 생각하십니까?
게다가 1:1이아니라 pair같은경우에는 심하면 순열해서 alias지어야할판인데?
소스코드 가져오기 싫으면,
https://www.acmicpc.net/problem/2448
이 백준문제
1등 뚫어봐.
내일 하루동안 랠리해서 니가 1등먹으면 너 인정.
니가 아니라고 생각하는 예제 들고오든지 개판 예제 들고와서 모범이라 지껄인 니가 문제지.
님한테 인정받기 싫구요
모범정도는 아니라고 생각하셔도 잘못쓰여지거나 ㅈㄴ예제로 못쓸만큼의 코드는 아니라는건 본인도 인정하실텐데
AttrTypeName 이 왜 문제인지 모름? 바보네 ㅡㅡㅋ
님한테 인정받기 싫다는말은 인정받으러 온게아니라 올바른 정보를 공유하려고 코갤 고정닉 판겁니다
님한테 인정받기 싫은게 아니라 그냥 못하는거잖아.
이빨만 까는 허접쓰레기라서.
코갤이 어딘가요?
바보네 허접이네 모르냐? 이렇게 분위기만 돋구지마시고 제데로된 반박부탁
프갤*
니가 좋아하는 리누스 토발즈가 뭐라든? 말은 아무나 하지 코드내놔 아냐. 저게 시발 주석 모범 코드여?
그럼 지금 코세님이 여기 올리신 코드가 100% 아무 문제없다고 확신하시는겁니까?
요기 댓글에 다른 사람이 주석이 더 안읽힌다잖아. 안 보임?
아무 문제 없지. 뭐가 문젠데?
왜 컴파일때 무시되는 template 들은 네임 테이블 관리 안할것 같아?
똑같은 int 타입에 using 만 다른거 STL 에 몇갤것 같아?
주석이 영어라서 더 안읽힌다고 생각됩니다만
임마 주석 안읽힌다고 한 사람 나름 실력자야. 너보다 영어 잘할지도?
주제를 알고 덤벼
어휴 진짜. 니가 나한테 명함이나 드리밀 수준이라면, 백준문제 풀어봐~ 왜 못해?
이건뭐 매번해봤자 제자리내요
주무시죠
니가 쳐 자야지 정신차리구
저 별것도 아닌 함수 하나에 아이구 내 참.
유익한 컨텐츠네요
우는 소리하는것도 웃기고, 주석 꼬라지도 웃기고 ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ 어이가 없다.
얌마. 얌마. 코드 내 놓을 실력 안되면 까대지마. 응? 너 욕먹는거 기분 나쁘지? 임마. 수준껏 놀아.
글고 입국할때 꼭 미리 스케쥴 잡아라. 영문과 교수 찾아가자. 컴공과 교수도 좋고
1000불 내기하자. 오키?
예제랍시고 올린 코드를 봐도 그렇고, (대체 type info랑 텐서플로우랑 무슨 상관이길래 이름을 들이미는지) 그나마 본인이 잘 한다고 주장하는건 검증할 수도 없는 영어 뿐인데 텍스트 해석 하나 제대로 못 하는것 보면 헛소리인 것 같고, 슬슬 어떤 인물인지 감이 오는듯
주제넘게 죄송하지만 저 사람이랑 싸우는 것 정말 시간 낭비인것 같아요.
진짜 100% 리얼 안기분나쁜데요 ㅋㅋ 그냥 다른분들이 잘못된 정보를 습득하실까봐 걱정될뿐
얌마 너 코드 못내놓잖아.
백준도 못풀지
아니면 전화번호 내놔봐. 담에 아주 핫라인으로 스케쥴 잡자.
하;
1000불 내기해? 내가 이기면 프갤에 피자로 다 쏨.
내가 지면 너한테 1000불 주고 따로 1000불치 프갤에 피자로 다 쏨.
걍 뜰게요
너 지금 말하는거 완전 프로그래머도 아니고 코흘리개 수준이야. ㅋㅋㅋㅋ
기분 안나쁘다며~
껄껄. 뭔 통치야. fact 가지고 이야기하는데
기분이고 나발이고 니가 니 증명을 못하네.
글이라고 써놓은게 저자의 의도와 상관없이 니 멋대로 번역한거랑, 그지같은 예제밖에 더 있음?
댓글 열심히 지우는구만.
솔찍히 코세님 해꼬지도 괜찮고한데 너무 시간이 많이 소비되고 사람들분들도 별로 안좋아하시는거같아서
얌마
니가 지금껏 한게 해꼬지야
원 저자에 대한 해꼬지고
나에 대한 해꼬지고
프갤러들 혹세무민한 해꼬지야
제가 처음에 공격적으로 접근했다면 죄송하구요
조까
근데 주석은 덕지덕지 발라놓은거 아니면 상황적으로 필요하신건 진짜 속으로 아시잖아요
사람들이 별로 안좋아하다뇨? 끝까지 가는걸 유저들도원해요 TX2님
옾사이드 트릭쓸려고 댓글 지운거임? ㅋㅋ anyway
니가 상대 잘못 골랐어~ 허접아
그런데 그런걸 주석은 금기되야한다처럼 하지마시고 주석에 대한 옳바름을 가르쳐주셨으면 좋았을텐데
이런 논쟁자체가 커뮤니티에 유익한 컨텐츠고 즐길거린데 왜케 내빼세요
계속 이야기 했지 이게 글 한 두개냐
그게 없는거같에서 갤처음으로 고정닉판건데 이렇게됬내요
걍 니 주제를 넘은거임
니 앎이 부족했고 의도도 불순했고 표현도 나빴고
말도 질질 끌면서 온갖 추태를 보였음
제가 여태까지 싸질러놓은 글중 번역이나 주석에대해서는 전부 100% 당당하구요
지금도 다시 돌아가서 하나하나 읊어보면 제가 크게 무례한것도아니고 처음에 갤자체를 잘몰라서 프갤이 트롤이냐 라고 물어봤던게 화근이됬던가같습니다
그럼 내기해
너 영어 네이티브 수준이라며~
내용 다 불순이야~ 내가하면 되지 나도 100% 내 해석이 맞다고 확신하는데?
내기
마지막으로 주석은 꼭 필요하다는걸 다시 명시하고싶고 저도 경력은 2년밖에안됬으나 미국 실리콘밸리에서 일하고있으니 질문이나 도움이 필요하신분들은 개인메시지로 남겨주시면 답변해드릴게요
이상 글이나 코멘트 달지 않겠습니다.
연락처 내놔봐 바로 확인해줌
연락처 궁금하시면 개인메세지로 물어보세요. 그럼 이만
꼴랑 2차 핏덩어리가 지난글엔 엄청 자신있아하더라
실력으루? ㅋㅋㅋ 간이 배밖에 나왔지 코드 하나 못내놓는게
2년차
자신감이 나이나 연차는 비례해야된다고 생각하는건 옳지않다고 저는 생각합니다. 그럼 진짜 이만..
-----
아이쉬 폰타이핑 짜증나
살력은 증명되어야지
어디서 말장난하냐
일회성이 뭐가문제냐고 물어보시는걸봐선 방대한 코드를 어지간히 안다뤄봤다는소리같내요 <---- ㅋㅋㅋㅋ