• 폐의약품 수거함: 건물 내 위치
  • 폐건전지 수거함: 건물 내 위치

운영시간: 평일 09:00 - 18:00 (주말 운영안함)

 

반응형
※ 해당 글은 2022년 3월에 작성되었습니다.

 

2022년 현재 우리는 말그대로 고유가 시대를 맞이하고 있다.

코로나19로 인한 원자재 가격 상승에 러시아의 우크라이나 침공까지...

이젠 고유가란다.

 

2022년 3월 30일 기준, 휘발유 가격

 

반면 경유는 어떨까.

 

2022년 3월 30일 기준, 경유 가격

 

한 차례 요소수 사태로 물류대란을 겪었던 경유 진영에 큰 악재가 겹쳤다.

경유가격이 너무 올라도 너무 오른 것이다.

심지어는 몇몇 주유소에선 휘발유보다 가격이 비싸지는 역전 현상까지 나타났다.

 

이럴때 우리한테 한 가지 대안이 있는데, 바로 전동화된 자동차이다.

전동화된 비율에 따라 마일드>하이브리드>플러그인 하이브리드>전기차로 볼 수 있는데, 오늘은 그 중에서도 전기차에 대해서 체험해보려고 한다.

 

출시때부터 전시장을 찾아가 눈여겨 봤던 아이오닉 5다.

 

비록 집밥이 없는 관계로 (지갑도 얇은 관계로) 살 계획은 없지만

최신 IT기기가 나오면 투고 서비스나 매장에 가서 체험해보는 것처럼 차도 가끔 렌트해서 체험하는 걸 즐기고있다.

 

전시장에서 시승 신청을 하게 되면, 비용이나 직원분의 설명 등 장점이 있으나

단순히 즐기기엔 단기 렌트 서비스를 이용하는 것이 개인적으론 편하다.

이번에는 쏘카를 이용해본다.

 

 

다만 사진을 꼼꼼히 찍어서 업 로드해야한다.

 
환한 곳에서 보면 이런 모습이다. 개인적으론 흰색이 제일 마음에 든다.

착석했을 때의 모습이다.

배터리가 79% 충전되어 있는 상태인데, 공조장치를 켠 상태로 248km를 갈 수 있다고 나온다.

 

톡톡튀는 외관만큼이나 내부도 재미있는 기믹들이 많았다.

사진을 미쳐 찍지 못해, 네이버에 업로드된 공식 사진으로 대체한다.

 

| 내부 재밌는 기능들

 

기어 노브, 출처: 네이버

버튼식, 다이얼 혹은 봉 형식이 있는데 아이오닉 5는 컬럼식이다. 이거에 대해선 아직 사용자들의 경험치가 쌓이지 않은 상태여서 호불호가 갈리는듯 하지만 생각보다 직관적인 편이다.

공조장치 컨트롤, 출처: 네이버

버튼식과 다이얼, 터치 방식이 혼합된 형태의 공조장치 컨트롤

별 다른 문제없이 적응할 수 있을 거 같다.

 

정체 불명의 자석 영역, 가족 사진을 걸어두면 좋을 거 같다. 출처: 네이버

무리수, 출처: 네이버

HUD, 출처: 네이버

안써본 사람은 있어도 한번만 사용한 사람은 없다는 그 HUD. 컴바이너 타입은 아닌듯 하다.

출처: 네이버
 

엠비언트 라이트, 메모리시트, 각종 조작 버튼들이 있다. 자세히 보면 픽셀 디테일들이 곳곳에 있고, 내외부 디자인이 정말 독특하고 매력적이다.

출처: 네이버
 

또 현대/기아의 전기차의 특징중 하나인 V2L 기능을 활용할 수 있는 뒷자석 공간의 포트.

이외에도 센터콘솔이 움직인다거나 공기청정 시스템, 각종 주행보조장치 등 다양한 옵션들이 있다.

차가 출시된지 오래되어 차에 대한 설명은 이만 줄이고, 감상으로 넘어간다.

 

| 감상

필자는 전기차를 니로 택시로 뒷자석에 탑승한 적은 있었지만, 기사님들 특유의 운전습관 때문인지 좋은 인상을 남기진 못했다. 전기차는 회생제동에 대한 체감 차이 때문에 운전자와 동승자의 승차감 차이가 난다고는 들었기에 직접 체험해보고 싶었다.

운전자로써는 아이오닉 5로 첫 전기차를 접해본 느낌은 이러하다.

 

시원한 가속감

한번 전기차를 타면, 내연기관으로 돌아가기 어렵다는 말이 있다.

아이오닉5는 대중모델임에도 저 속설을 담박에 이해할 수 있었다.

 

필자는 평소에 100 중반 내외의 마력의 차종을 주로 이용하고 있고, 안전이 제일, 연비 수치에 흥미를 느끼는 말그대로 자동차는 이동수단 이라는 생각을 가지고 있었다.

 

하지만, 전기차 특유의 가속력은

이따금씩 속력을 내어보는 나 자신을 발견할 수 있었다.

이 가속력은 특히 차선 변경시에 빛을 발했다.

 

남은 주행거리와의 추격전

다소 날씨가 추웠던 때에 시승을 했던지라 공조장치를 켤 수 밖에 없었는데,

남은 주행거리 차이가 생각보다 차이가 심해서 당황스러웠다.

 

잠깐 공조장치를 끈채로 일정 시간 주행을 해봤지만 표시 주행거리 대비 실 주행거리가 차이가 다소 나서 집밥이 없다면 정말 주행하면서 주행거리와의 눈치싸움이 자주 일어날 것 같다.

 

이외에도 여러 감상들이 있지만,

신차여서 좋은 점.

잠깐의 체험이라는 점.

첫 전기차 운전이라는 사실에 들떠 있었다는 점.

 

객관적인 감상을 해치는 요소들이 많았다.

 

| 오너의 평가

 

그래서 찾아본 오너의 평가!

출처: 네이버

기본적으로 가격과 주행거리를 빼곤 다 9점을 상회하며 준수한 평가를 내리고 있는 듯하다.

필자가 느낀대로 겨울철 주행거리에 대한 아쉬움을 찾아볼 수 있었다.

아직은 꽁깍지가 씌여있는 상태인걸까

 

해외매체에서도 트렁크에 대한 아쉬움을 표하는 것을 보았는데, 오너의 평가에도 같은 의견이 있었다.

트렁크, 골프팩이 아니라면 나름 준수한 것 같다.

 

실제 충전비용과 전비에 대한 내용도 확인할 수 있엇다.

기름값이 조금 내려온다면 내연기관이나 하이브리드쪽이 더 가성비가 좋을지도...?

 

 

 

가격에 대한 아쉬움이 많았다. 차값은 6000만원이 넘지않아 보조금은 100% 지급된다.

승차감과 소음 역시 값에 비하면 프리미엄급이라고 해도 무색할 정도였다.

 

| 해외 매체의 평가

 
 

 

Doug DeMuro의 더그 스코어, 점수가 다소 낮은듯하다. 출처: Doug DeMuro

 

 
카 와우 팀의 평가, 맷 왓슨은 바로 구매해도 될 차로 평가했다. 출처: Carwow

 

이외에도 해외에서 올해의 차 혹은 후보로 선정되는 만큼 좋은 차임에는 틀림이 없는 것 같다.

 

이용 시간은 총 2시간 반, 주행요금도 있다.

 

자기부담금이 5만원까지 보장되는 보험이 14,560원으로 꽤 비쌋다.

반면 대여요금은 26,730원으로 납득할만한 가격이었다. 또 대여요금은 할인 구독 상품이 많아서 줄일 수 있는 여지가 많지만 주행요금에 충전까지 고려한다면 저렴한 금액은 아닌 것 같다.

 

총 비용: 48,090원

 

반응형

'리뷰' 카테고리의 다른 글

Flexall, 진통/소염제  (1) 2023.04.19
나의 소녀시대, Our TImes 2016  (0) 2023.03.27

때는 올 초 제주 여행을 가기 1주일 전...
조금씩 조금씩 허리에 통증이 오기 시작하더니

급기야 비행기를 타기 전 
공항에선 자리에 앉기도, 자리에서 일어나기도 힘들 정도의 고통이 느껴졌다. 
특별히 삐끗하거나 허리통증이 있지 않았기 때문에 더 공포스럽게 다가왔다. (이렇게 평생 장애를 가지게 되는 분도 있겠구나 싶었을 정도...)

운동의 `ㅇ`도 액티비티의 `ㅇ`도 모른채로,  활동적인것과 사회적 거리두기를 30년째 해오던 나였기에, 깁스도 생전 해본 적 없었다. 나로써는 당황스러웠다. 

이런 내가 진통/소염제를 사다니...

부랴부랴 김포 공항내에 있는 약국을 들렀다.

 

※약국은 3층에 위치하고 있습니다.

주인 아저씨는 단호한 말투로 한 제품을 추천해주셨는데...
바로 Flexall이다. 
아저씨의 말에 따르면 이 제품은 물 건너온 끝판왕의 제품이라는 것이다.

 

아마존 후기에 따르면 천조국 아재가 미라클을 연발한다는 그 제품 ! 두둥 !

효과에 대한 기대 반, 앞으로의 여행 일정에 대한 걱정 반으로 
제품을 구매하고 3박 4일 여행 내내 발랐다.

처음 발랐을 때 느낌은 와... 그 화한 느낌이란 이래서 파스를 쓰는구나 깨닫는 순간이었다.

이 제품 덕분에 제주 여행을 잘 다녀오고 허리 통증도 거의 없어졌다.

 

한 번 쓰면 6개월 이상 쓸 일이 없다는 그 제품!

롱텀 리뷰가 없다는 그 제품!!

 


통증 있으신 분들 꼭 써보십쇼...

반응형

'리뷰' 카테고리의 다른 글

고유가 시대, 아이오닉 5 체험기  (0) 2023.04.19
나의 소녀시대, Our TImes 2016  (0) 2023.03.27

out 매개 변수 한정자를 이용하면 참조를 통해 인수를 전달하고 해당 값을 넘겨 받을 수 있다.

 

이전 버전에서는 out을 사용하기 전에 넘겨줄 변수를 미리 정의했었어야 했는데, C# 7.0버전 부터 인수로 전달되는 위치에 변수를 선언할 수 있게 됐다.

 

void Foo()
{
  // 타입을 명시하지 않고 var키워드도 사용가능하다.
  int.TryParse("1", out var i);
}
 

out 키워드로 여러 값을 반환받는 경우가 있는데 특정 값이 필요 없는 경우에 아래와 같이 선언할 수 있다.

 

Foo(out var x1, out var x2, out _);
 
반응형

'Workspace > C#' 카테고리의 다른 글

[C# 7.0] 로컬 함수  (1) 2023.04.17
[C#] partial 키워드  (0) 2023.04.06
[C#] new 한정자  (0) 2023.04.06
[C# 7] Tuple  (0) 2023.04.06
[C#] .NET Framework에 대응되는 버전  (1) 2023.04.06

C# 7.0에 로컬 함수란 것이 추가되었다.

메서드 내의 메서드로 중첩된 형식이다.

 

로컬 함수를 포함하는 메서드내에서만 호출할 수 있기 때문에

실수로 메서드를 호출되는 상황 등을 방지할 수 있고, 코드의 의도를 명확하게 한다.

 

| 사용방법

 

public class Foo
{
  public void DoBar() {
    int foobar = 1;
    DoTask().Forget();    

    // 로컬 함수
    async UniTask DoTask() {
      foobar++;
      await DoSome(foobar);
    }
  }
}
 

위와 같이 메서드 내에 정의하고 보통의 메서드처럼 호출해서 사용하면 된다.

 

| 제약

 

로컬 함수는 아래에서 선언하고 호출할 수 있다.

 

  • 메서드, 반복기 메서드 / 비동기 메서드
  • 생성자
  • 속성 접근자
  • 이벤트 접근자
  • 무명 메서드
  • 람다 식
  • 종료자(소멸자)
  • 다른 로컬 함수

 

그리고 아래의 한정자를 사용할 수 있다.

 

  • async
  • unsafe
  • static (단, 지역 변수나 인스턴스 상태를 캡처할 수 없음)
  • extern

 

로컬 함수 캡처나, Action, Func, delegate 형식에 대입도 되는 것 같다.

자세한 내용은 공식문서를 참고하시라.

 

| 참고

 

 

 

반응형

'Workspace > C#' 카테고리의 다른 글

[C# 7.0] 출력(out) 변수 선언  (0) 2023.04.17
[C#] partial 키워드  (0) 2023.04.06
[C#] new 한정자  (0) 2023.04.06
[C# 7] Tuple  (0) 2023.04.06
[C#] .NET Framework에 대응되는 버전  (1) 2023.04.06

| 개요

 

무료 .NET 디컴파일러 dotPeek의 주요 기능과 사용 방법에 대해 이해

 

| dotPeek이란?

 

dotPeek은 JetBrains에서 개발한 무료 .NET 디컴파일러입니다. 

.NET으로 작성된 어셈블리나 실행파일에서 C# 코드를 추출하고 디버깅할 수 있습니다.

 

| dotPeek 주요 기능

 

  • .NET 어셈블리 디컴파일링
  • 코드 분석 및 탐색
  • 심볼 서버 지원
  • 기존 Visual Studio 단축키 지원
  • C# 최신 언어 기능 지원
  • 코드 스타일 및 레이아웃 설정

 

| dotPeek 설치 방법

 

  • dotPeek 사이트에서 dotPeek 다운로드
  • 약관 동의

  • 인스톨 실행

| 디컴파일 및 어셈블리 브라우징 방법

 

dotPeek 설치 후 초기 실행 화면은 아래와 같습니다.

Assembly Explorer 윈도우에 .NET으로 컴파일한 dll 또는 exe파일을 드래그 & 드랍으로 추가할 수 있습니다.

Newtonsoft.Json.dll을 열어본 모습

il2cpp로 빌드된 경우나, 난독화 된 경우 dotPeek으로 분석하는 데엔 한계가 있습니다.

 

| 프로젝트 추출 방법

  • 임포트한 프로젝트 우클릭
  • Export to Project 클릭
  • 추출 경로 및 옵션 설정

어셈블리 내 모든 C# 코드와 솔루션 및 프로젝트 파일까지도 생성할 수 있습니다.

 

| 유니티로 제작된 게임 코드 보기

  • 스팀 > 유니티로 제작된 게임 우클릭 > 속성

  • 로컬 파일 탭 > 찾아보기 버튼

  • <게임명>_Data 폴더 > Managed > Assembly-CSharp.dll (혹은 그 외 다른 dll)

 

| 결론

 

dotPeek을 통해서 간단한 과정을 거쳐, 실행파일을 디컴파일을 하거나 어셈블리를 브라우징할 수 있었습니다.

이를 통해 다른 사람들의 코드를 이해하거나 이전 버전의 코드를 복원(유실된 경우)하는 등의 다양한 용도로 사용할 수 있을 거 같습니다.

 

Visual Studio의 단축키 및 기능(예) 정의로 이동, 모든 참조 찾기 등)들을 많이 지원하고 있어서

Visual Studio 혹은 Visual Studio Code 등의 IDE를 사용해본 유저라면 직관적으로 이해하고 쉽게 사용할 수 있습니다.

반응형

partial 한정자는 클래스, 구조체, 인터페이스 등을 둘 이상의 분할된 형태로 정의할 수 있는 키워드다. (부분 클래스, 부분 메서드 등으로 불림) (C# 2.0) 분할된 파일들은 컴파일될 때 결합된다.

 

다음은 partial이 권장되는 몇 가지 상황이다.

 

  • 대규모 프로젝트에서 한 클래스에 대해 여러 프로그래머가 동시에 작업할 경우
  • 스크립트 일부를 자동 생성하는 경우 (예) Windows Forms)

 

| partial 키워드 사용방법

 

// Foo.cs
public partial class Foo
{
    public void DoWork()
    {
    }
}

// Foo.Generated.cs
public partial class Foo
{
    public void Bar()
    {
    }
}
 

class, struct, interface앞에 partial 한정자를 기입하면 된다.

단, public, private 등과 같은 액세스 한정자로 지정해야한다. (class, struct, interface, 멤버 등 모든 경우)

 

| 병합 범위

 

class, struct 등의 부분이 absract, sealed로 선언되면 전체 형식이 absract, sealed로 간주된다.

 

이외에도 병합되는 것들

  • XML 주석 (예) summary, returns)
  • 인터페이스
  • 제너릭 형식 매개 변수 Attrbute
  • 클래스 Attribute
  • 멤버
[SerializableAttribute]
partial class Moon { }

[ObsoleteAttribute]
partial class Moon { }

>> 

[SerializableAttribute]
[ObsoleteAttribute]
class Moon { }
 
  • Attribute 병합 예
partial class Earth : Planet, IRotate { }
partial class Earth : IRevolve { }

>>

class Earth : Planet, IRotate, IRevolve { }
 
  • 인터페이스 병합 예

 

| 제한사항

 

  • partial로 정의된 형식의 모든 부분이 partial로 정의되어야 함
public partial class A { }
//public class A { }  // Error, must also be marked partial
 
  • 동일한 어셈블리에 동일한 모듈(exe 혹은 dll)에 정의해야 함
  • 아래 키워드를 다르게 설정할 경우 충돌

 

  1. public, private, protected, internal
  2. abstarct, sealead
  3. new 한정자
  4. 제너릭 제약 조건

 

| 부분 메서드

 

C# 3.0 사양에 추가된 내용으로 메서드 또한 부분 형식으로 정의가 가능하다.

partial 키워드 자체가 우선순위 없이 병합되는 형식이기 때문에

부분 메서드의 경우엔 정의 부분과 구현 부분으로 나뉜다.

// Definition in file1.cs
partial void OnNameChanged();

// Implementation in file2.cs
partial void OnNameChanged()
{
  // method body
}
 

하나 특이한 점은 구현되지 않는 부분 메서드의 경우(정의 부분만 있는) 컴파일러가 메서드 정의, 호출 코드를 삭제한다.

 

한정자나 제한 상황에 따라 구현을 포함해야하는 지 여부가 갈린다.

아래 제한 사항을 따른다면 구현을 포함하지 않아도 된다.

 

  • 액세스 한정자가 없는 경우 (디폴트: private)
  • void를 반환
  • out 매개 변수 없는 경우
  • 한정자 virtual, override, sealed, new, extern가 없는 경우

 

위 제한 사항을 따르지 않는 경우엔 (예) public virtual partial void) 구현을 제공해야만 한다.

 

| 부분 메서드 제한사항

 

  • unsafe, static 한정자를 사용할 수 없다.

 

| 참고

 

 

반응형

'Workspace > C#' 카테고리의 다른 글

[C# 7.0] 출력(out) 변수 선언  (0) 2023.04.17
[C# 7.0] 로컬 함수  (1) 2023.04.17
[C#] new 한정자  (0) 2023.04.06
[C# 7] Tuple  (0) 2023.04.06
[C#] .NET Framework에 대응되는 버전  (1) 2023.04.06

 

new는 인스턴스를 생성하는 데 쓰이는 경우가 제일 익숙하리라 생각이 된다.

하지만 new 키워드는 생각보다 다양한 역할을 한다.

 

 

이 글에선 new 한정자에 대해 알아보자.

 

| new 한정자를 알게되는 경위

 

The keyword new is required on 'DerivedC.x' because it hides inherited member 'BaseC.x'.
 

보통 파생된 클래스에서 같은 이름의 멤버를 지정하다 알게 될 확률 58,000%다.

물론 new 한정자가 없어도 경고 메시지를 낼 뿐, 기본 클래스의 멤버를 숨기는 것으로 동작한다.

 

| new 한정자 사용법

 

public class BaseC
{
    public int x;
    public void Invoke() { }
}
public class DerivedC : BaseC
{
    new public void Invoke() { }
}
 

 

숨기고 싶은 멤버 (property, field, method, indexer, const) 앞에 new 한정자를 기입해주면 된다.

한 가지 유의사항이 있다면, override 한정자와는 동시에 사용할 수 없다.

 

| 참고

 

 

반응형

'Workspace > C#' 카테고리의 다른 글

[C# 7.0] 출력(out) 변수 선언  (0) 2023.04.17
[C# 7.0] 로컬 함수  (1) 2023.04.17
[C#] partial 키워드  (0) 2023.04.06
[C# 7] Tuple  (0) 2023.04.06
[C#] .NET Framework에 대응되는 버전  (1) 2023.04.06

+ Recent posts