역사를 보면, 인류는 어떤 상황 속에서도 교육을 항상 지속하여 왔습니다.
그러한 교육에 대한 열정이 있었기에 현재의 문명을 이룰 수 있었다고 생각합니다.

COVID-19 상황이 지속되는 가운데 (주)인실리코젠은 철저한 방역지침을 준수하며, 생물정보 인재양성 프로그램을 진행하였습니다. 7월 6일부터 8월 14일까지 6주간 진행된 프로그램의 생생한 후기 함께 보겠습니다.





























작성 : 人CoINTERNSHIP 제11기 수료생
이가희, 이솔휘, 이주연, 진종현, 황성경

Posted by 人Co

2020/08/26 09:00 2020/08/26 09:00
, , , , , , , ,
Response
No Trackback , No Comment
RSS :
https://post-blog.insilicogen.com/blog/rss/response/355

크롬 개발자도구의 숨은 팁 알아보기



웹 기반 관련 업무에 종사하시는 분들은 개발자 도구가 친숙하실거로 생각합니다. Elements 탭에서 CSS를 확인하거나 Console 탭에서 출력된 결과물을 확인하기도 합니다. 저도 웹 개발을 하면서 스크립트 디버깅을 하는 경우가 있는데 그럴 때마다 조금 불편하다는 생각을 하게 되었습니다. 그래서 개발자 도구 꿀팁에 대해 알아보게 되었고 여러분들에게 개발자 도구에서 잘 알려지지 않은 기능을 공유해보려고 합니다.
 
 

 
개발자 도구가 생소하신 분들을 위해 크롬 개발자 도구에 대해 설명하겠습니다. 구글에서 만든 웹 브라우저인 크롬에는 개발을 도와주는 다양한 도구가 기본적으로 제공되는데 이를 개발자도구라고 합니다. 웹 페이지는 많은 요소로 이루어져 있고 이 요소들은 각각 그림, 글, 입력 폼 등 다양한 형태로 존재하게 됩니다. 개발자 도구는 개발자들이 이러한 요소들을 확인하거나 디버깅할 때 자주 사용됩니다.
 

개발자 도구 실행은

  • F12
  • Ctrl + Shift + i

로 실행할 수 있고 아래 사진처럼 [도구 더보기 > 개발자 도구] 를 클릭해서 실행할 수도 있습니다.

[Fig.1] Opening DevTools from Chrome`s main menu (https://developers.google.com/web/tools/chrome-devtools/open)

개발자 도구를 실행하게 되면 여러 가지 패널이 보일 텐데 각 패널의 간략한 특징은 아래와 같습니다.

[Fig.2] DevTools screen

  • Elements : html/CSS 상태 확인
  • Console : 콘솔 (변수 정보를 확인하고 오류 메시지 표시)
  • Sources : 스크립트 디버깅 (break point 지정 및 변수 모니터링 등)
  • Network : 브라우저에서 발생하는 통신 상태
  • Performance(예전 Timeline패널) : 성능 측정
  • Memory(예전 Profiles 패널) : 메모리 사용 형태를 작성하고 누수 탐색.
  • Application(예전 Resources 패널) : 쿠키 및 스토리지 등의 내용 수집
  • Audits : 페이지를 분석하고 최적화를 위한 팁 나열
  • Security : Mixed content 이슈, 인증서 문제 등을 디버깅


 

[Fig.3] Console log

Console 패널에서 호출 결과를 확인하기 위해 위의 그림처럼 출력하는 경우가 많이 있습니다. 이때 결과로 나온 Object를 복사하고 싶다면 어떻게 할까요? 보통 그냥 drag 해서 선택한 다음 Ctrl + c, Ctrl + v 로 복사하는데 이러면 나중에 다시 정리해야 하고 결과값이 많은 Object의 경우 하나하나 펼쳐주지 않으면 [...]이 복사 될 수 있습니다. 이런 불편함을 없애주는 copy이라는 메소드가 있는데 이 메소드를 사용하면 객체가 클립보드에 저장됩니다. 하지만 변수에 담기지 않은 상태, 즉 이미 로깅된 객체는 copy에 바로 담을 수 없고 변수로 지정을 해줘야 합니다.

예시


1. 내가 지정하고 싶은 객채에 오른쪽 마우스를 클릭 후 Store as global variable 선택


 [Fig.4] Select 'Store as global variable'

2. 선택하면 global 영역에 임시 변수로 저장됨

[Fig.5] Save variable

3. 생성된 임시변수를 사용해서 copy메소드 실행

[Fig.6] Copy method

그러면 객체가 복사됩니다.

 


프론트앤드에서 데이터를 얻기 위해 백앤드로 XHR 요청을 보냅니다. 이때 내가 원하는 XHR을 한 번 더 요청하고 싶다면 새로고침을 하는 방법도 있겠지만, 더 쉬운 방법을 알려드리겠습니다.

[Fig.7] Example replay XHR

개발자 도구에서 Network 패널을 선택 후 원하는 XHR요청을 오른쪽 마우스로 클릭하면 Replay XHR이 나오는데 이를 선택하면 해당 XHR을 재요청하게 됩니다.
 
 

 
화면 일부를 캡처하는 것은 이미 여러 가지 툴들이 존재하고 있습니다. 하지만 다음 작업은 웬만한 프로그램으로는 힘듭니다.
  • 스크롤 아래 보이지 않는 부분을 포함하여 웹 페이지에 있는 모든 것의 스크린 샷
  • DOM 요소의 내용을 정확하게 캡처

이런 작업들은 운영체제에 제공되는 스크린 샷 도구로 해결할 수 없지만 개발자 도구에선 해결할 수 있습니다.

시작하기 전에 Command 메뉴를 소개하겠습니다. 리눅스에 셸(Shell)이 있듯이 크롬에는 Command 메뉴가 있습니다. Command 메뉴를 사용하면 명령어를 입력해 Chrome을 조작할 수 있습니다.

Command 메뉴는 개발자 도구를 연 후

  • Ctrl + Shift + p

를 통해 열 수 있고, 아래 버튼을 클릭하여 열 수도 있습니다.


[Fig.8] Opening command from Chrome`s main menu
 
Command 메뉴를 열게 되면 아래 그림과 같이 다양한 명령어들이 있습니다.
 

[Fig.9] Command function
 

제가 Command 메뉴를 설명해 드린 이유는 Command 명령어를 통해 스크린 샷을 할 수 있기 때문입니다.
이제 다시 본론으로 돌아와 스크린 샷에 대해 말해보겠습니다.

1. 스크린 샷 하고자 하는 웹 페이지를 엽니다. 그리고 개발자 도구를 열고 Command 메뉴를 실행합니다.

2. 그런 다음 명령어 screenshot을 입력합니다. 그러면 screenshot에 관련된 여러 명령이 아래에 나오게 됩니다.

[Fig.10] screenshot step 2

3. Capture full size screenshot을 선택하게 되면 현재 페이지의 전체 스크린 샷을 얻을 수 있습니다.

[Fig.11] screenshot 결과물

마찬가지로 DOM 요소의 스크린 샷을 만들려면 스크린 샷 도구를 사용할 수 있지만, 요소를 정확하게 캡처하는 게 쉽지 않습니다. 이때는 Capture node screenshot 명령어를 실행하면 원하는 요소만 선택하여 캡처할 수 있습니다.

1. Elements 패널에서 원하는 요소를 선택합니다.

[Fig.12] Node screenshot step 1

2. 선택한 후 Command 탭을 열어 screenshot 명령어를 입력합니다. 그중 Capture node screenshot 을 선택하면 요소가 저장됩니다.

[Fig.13] Node screenshot 결과물

 


크롬 확장프로그램인 Awesome Screenshot도 전체 스크린 샷을 지원합니다. Awesome Screenshot은 녹화, 공유, 스크린 샷 등의 기능을 제공하는 데 스크린 샷에 텍스트, 주석, 라인, 화살표 및 모양을 캡처한 이미지에 직접 추가할 수 있는 기능이 있습니다.
Awesome Screenshot을 사용하기 위해서는 우선 확장 프로그램을 추가해야 합니다. Awesone Screenshot은 https://www.awesomescreenshot.com/ 에서 무료로 추가할 수 있습니다. 추가한 뒤에는 오른쪽 위에 확장 프로그램을 선택하면 아래 메뉴가 나옵니다.

 

[Fig.14] awesome screenshot 메뉴

  • Visible Part : 현재 보이는 전체화면을 캡처
  • Full Page : 스크롤 아래 보이지 않는 부분을 포함한 전체화면 캡처
  • Selected Area : 선택한 영역을 캡처
  • Visible Part after Delay : 옵션에 따라 3초, 5초 후 캡처
  • Entire Screen & App Window : 화면 공유

  • Annotate Local & Clipboard Image : 내 컴퓨터의 이미지를 편집기로 불러옴

캡처한 뒤에는 바로 여러 도구를 추가할 수 있는 화면으로 넘어가게 됩니다. 무료로 제공되는 부분은 화살표, 도구, 텍스트 등 빨간색 상자 부분이고 등급을 업그레이드하면 노란색 상자 부분의 도구들을 사용할 수 있습니다.

[Fig.15] awesome screenshot 도구

확장 프로그램을 추가하고 싶지 않으신 분, 요소 캡처를 원하시는 분께는 개발자 도구를 이용하는 걸 추천해 드리고 시간 지연 옵션을 원하시는 분, 캡처 후 여러 가지 모양을 직접 추가하시고 싶으신 분들에게는 Awesome Screenshot을 추천해 드립니다.

 


크롬 개발자 도구에서 디버깅을 하다 보면 특정 위치로 이동하기 위해 원하는 위치에 breakpoint를 설정하고 next로 넘어가는 경우가 많이 있습니다. 긴 함수에서도 여러 값을 보기 위해 이러한 방법을 사용하는데 이런 경우 나중에 원치 않아도 걸리게 되어 시간이 지체되고 다시 해체해야 하는 번거로움이 있습니다. 이때 사용하는 기능이 Continue to here입니다. 디버깅 중 원하는 코드 위에 마우스 오른쪽 버튼을 클릭하면 Continue to here 이 있는데 이 기능을 사용하면 breakpoint를 설정하지 않아도 원하는 위치로 이동할 수 있어서 나중에 breakpoint에 걸리지 않고 다시 해체할 필요도 없습니다. 다만 breakpoint가 걸린 함수 내에서만 이동할 수 있습니다.

[Fig.16] Continue to here

만약 특정 이벤트가 발생하는 시점에 호출되는 함수를 알 수 있다면?? 아마 좀 더 디버깅을 쉽게 할 수 있을 것입니다. 개발자 도구에서는 이렇게 이벤트가 발생하는 시점에 break point를 걸 수 있는 기능을 제공하는데 이게 바로 Source 패널에 있는 Event Listener Breakpoints입니다.

[Fig.17] Event Listener Breakpoints

위와 같이 click을 선택하면 click 이벤트가 발생하였을 때 해당 함수에 break point가 걸리게 됩니다. 하지만 문제는 대부분 라이브러리를 사용하기 때문에 아래와 같이 라이브러리 코드에서 멈추게 되는데


[Fig.18] debug

그러면 next 버튼을 계속 눌러줘야 하는 번거로움이 있습니다. 이때 원하는 파일을 디버깅에서 제외하는 기능이 Blackbox입니다. 설정 > Blackboxing > Add pattern... 을 눌러 라이브러리를 등록하게 되면 디버깅을 할 때 해당 라이브러리 코드는 디버깅 대상에서 제외되게 됩니다.


[Fig.19] Framework Blackboxing





이번엔 console 명령어에 대해 알아보겠습니다. 저를 포함한 많은 분께서 console.log()를 가장 많이 사용하실 텐데 console에는 다양한 명령어가 존재하고 있습니다. 이 글에서는 배열을 table로 console 창에 보여주는 법을 알려드리겠습니다. Console창에 console.table([배열객체]) 혹은 table([배열객체]) 를 해주시면 됩니다. 그러면 아래와 같이 예쁘게 결과가 나오게 됩니다.


[Fig.20] console.table()

이미 Console 창에 출력된 결과를 table로 보여주고 싶다면 앞서 알려드린 방법처럼 global 변수에 담은 뒤 사용하시면 됩니다.




Elements 패널에서 간단하게 CSS를 수정해본 경험 다들 있으실 겁니다 개발자 도구에서는 스타일을 쉽게 테스트하기 위해 Elements 패널에서 CSS 수정뿐만 아니라 가상 클래스를 작동시켜 테스트할 수 있습니다. Element 패널에 styles 아래 :hov를 클릭하면 여러 이벤트가 있는데 각각의 이벤트마다 적용된 CSS를 확인, 수정할 수 있습니다.



[Fig.21] Trigger class

또 CSS 스타일을 디버깅할 때, 요소를 숨겨야 할 때도 간혹 있습니다. 이때는 요소를 선택한 뒤 키보드의 H 키를 누르면 요소를 빠르게 숨길 수 있습니다.
 

[Fig.22] ‘H키를 이용한 빠른 요소 숨기기 예시

크롬 개발자 도구의 흰 바탕색이 소스 보기 부담스럽고 눈이 쉽게 피로해지는 분들 있으실 겁니다. 이를 위해 크롬에서는 색상 반전 기능을 제공하고 있습니다.

1. 개발자 도구를 열어 설정을 실행합니다.

[Fig.23] 개발자도구 설정메뉴

2. Performances 메뉴를 선택 후 Appearance 아래에 Theme을 Dark로 변경합니다.

[Fig.24] Theme 변경

3. 다음과 같이 Dark Theme로 변경됩니다.

[Fig.25] Dark Theme

또 Dock의 위치를 원하는 곳으로 변경할 수 있는데 분리, 왼쪽, 아래쪽, 오른쪽 순으로 변경할 수 있습니다. 저는 듀얼모니터를 쓸 때 개발자 모드를 분리해서 사용하곤 하는데 여러분들은 개발하는 화면에 맞게, 취향이나 편의에 따라 원하는 Dock 위치를 바꿔가며 사용하시면 좋을 것 같습니다.

[Fig.26] Dock 위치 변경

 


지금까지 알아두면 편리한 잘 알려지지 않은 기능에 대해 살펴보았습니다. 제가 설명한 기능 외에도 크롬 개발자 도구에서는 다양한 기능을 제공하고 있고 Google에서 제공하는 개발자 도구 공식 매뉴얼(https://developers.google.com/web/tools/chrome-devtools)에 설명이 잘 되어 있으니 이번 기회에 다른 기능들에 관해서 관심 두고 공부하셔서 개발의 질을 높이는 데 도움이 되었으면 좋겠습니다. 감사합니다.

 




작성 : 대전지사 도선아 개발자

Posted by 人Co

2020/08/17 01:50 2020/08/17 01:50
Response
No Trackback , No Comment
RSS :
https://post-blog.insilicogen.com/blog/rss/response/354

[Webinar] 제5회 유전체 데이터 분석 교육

Posted by 人Co

2020/08/07 14:34 2020/08/07 14:34
Response
No Trackback , No Comment
RSS :
https://post-blog.insilicogen.com/blog/rss/response/353

[채용공고] BI 분석 담당자 채용



(주)인실리코젠은 국내에서 생산되는 바이오 데이터의 60% 이상을 가공하고 저장하는 데에 기여하고 있습니다. 방대한 데이터와의 지속적인 커뮤니케이션은 우리의 발걸음을 데이터모델링, 머신러닝, 그리고, 딥러닝을 기본으로 하는 AI로 향하게 만들었습니다. insilico 상에서 질병의 원인과 솔루션을 찾고, 새로운 기능의 종자를 발굴하고, 개개인에게 맞는 데이터 식품을 만드는 첨단 기술을 구현해내면서 인공지능 기술의 단초를 만들어냈습니다.

AI로 대표되는 바이오의 미래는 지난 시간 방대한 데이터를 다루고 이해해보지 못한 그룹은
다가설 수 없는 먼발치의 가상현실일 뿐입니다.

저희 人Co는 20년 가까운 시간 동안 생물정보 외길을 변함없이 걸어왔습니다. 앞으로의 Bioinformatics는 AI의 도움을 받아 지금껏 만나보지 못한 insilico 상의 변화를 만들어낼 것입니다.

이러한 변화와 혁신의 무대 위에서 함께할 인재를 모십니다. 늘 새로운 꿈을 꾸며 무한한 도전정신을 가진 분들과 같이하고 싶습니다.


[채용분야]

BI 분석 담당자
- 지역 및 인원 : 본사(용인) 0명(신입, 경력), 지사(대전) 0명(신입)
- 담당업무 : 유전체 분석, 전사체 분석
- 자격요건 : 생물정보학 또는 생물학 관련 전공자(석사 이상),
프로그래밍 가능자(Python, Perl, R 택 1)
- 우대사항 : 생물정보 데이터 분석 경력 2년 이상, NGS 데이터 분석 경험자,
연구 논문 작성 가능자, 영어 능통자



[전형절차]

1. 서류전형(2020.07.27 ~ 2020.08.16)
     - 입사지원서(당사양식)
     - 서류전형 합격자에게만 1차 면접 요청(이메일 통지)

2. 실무자 면접 - 1차(2020.08.03 ~ 2020.08.21)
     - 자기소개(경력포함) 포트폴리오(PDF, 5분 분량)
     - 1차 면접 합격자에게만 2차 면접 요청(이메일 통지)

3. 임원 면접 - 2차(2020.08.17 ~ 2020.08.21)
     - 2차 면접 합격자에게만 3차 추가서류 제출 요청(이메일 통지)

4. 추가서류 제출 - 3차(2020.08.24 ~ 2020.08.28)
     - 하단 제출서류 참고

5. 최종합격 통보(2020.08.31 예정) - 입사예정일(2020.09.07)



[채용형태]
신입(인턴 3개월 계약 포함), 경력(경력에 따라 수습계약 포함)


[근무환경]
- 근무제 : 주 5일 근무
- 복리후생 : 4대 보험, 퇴직연금 및 성과급, 유연근무제 (장기근속자)
- 휴가제 : 연차, 경조휴가, 충전휴가(장기근속자)
- 지원 : 경조사비, 주차비, 교육훈련비, 도서 등 지원


[접수방법]
서류제출방법 : E-mail 첨부 제출 (ms@insilicogen.com)


[제출서류]
1) 서류전형 시
 ① 자사 입사지원서 : 파일명 `입사지원서_성명_지원분야.docx`로 저장
 ② 개인정보 이용 동의서 포함

 


2) 1차 면접전형 시(서류전형 합격자에게만 1차 면접 요청_이메일 통지)
 공통 : 포트폴리오(PDF) 제출 및 발표(자기소개 및 경력 위주 내용, 5분 이내)

3) 3차 서류 제출(2차 면접 합격자에게만 3차 추가서류 제출 요청_이메일 통지)
 ① 공통 : 건강검진확인서 및 병력확인서 제출
 ② 경력지원 시
  - 전 근무지의 근로자 원천징수 영수증(퇴사연도, 직전연도)
  - 고용보험이력확인서 : 고용보험 사이트에서 발급 가능

Posted by 人Co

2020/07/24 17:18 2020/07/24 17:18
Response
No Trackback , No Comment
RSS :
https://post-blog.insilicogen.com/blog/rss/response/352


전 세계 COVID-19 확진자가 1,000만 명을 넘어선 지금, 일일 확진자 수의 상승세와 함께 한국에서도 COVID-19는 재유행 국면을 맞고 있습니다. FDA에서는 아직 백신과 치료제가 없다고 공표하였고, 의료진의 처방 이외의 약품에 주의하라고 권고하고 있습니다.
SARS-CoV-2를 잘 이해하기 위해, 이들이 인간의 숙주 단백질에 어떤 영향을 미치는지 예측된 생물학적 네트워크를 확인할 수 있는 웹사이트인 Coronavirus Network Explorer를 소개합니다.
Coronavirus Network Explorer는 SARS-CoV-2가 숙주 세포에 어떤 영향을 미치는지 보여주는 생물학적 네트워크를 살펴볼 수 있는 웹페이지입니다(Fig.1). 생물/의학 문헌의 증거를 바탕으로, 이 네트워크들은 대규모 지식 그래프 및 머신러닝을 사용하여 선택된 생물학적 과정, 질병 또는 경로에 대한 유전자 및 약물 영향을 예측합니다. 지금부터 Coronavirus Network Explorer를 소개하려고 하며, Fig.1에서의 위치(좌측/우측 등)를 기준으로 설명하고자 합니다.
최근 Gorden 외 연구진은 친화 정제-질량 분석법(AP-MS)을 통한 스크리닝으로 SARS-CoV-2 바이러스 단백질과 상호작용하는 인간 숙주 단백질을 확인하였습니다(출처 : Gordon et al., 2020. Nature.). COVID-19에 대비하여 잠재적으로 사용할 수 있는 약물을 확인하기 위해 숙주 단백질은 기능적으로 특징지어지고, 기존 약물 표적에 대해 스크리닝 되었습니다(Fig.2). 생물/의학 문헌에서 얻은 지식 데이터베이스인 QIAGEN Knowledge Base와 머신러닝이 결합한 IPA를 바탕으로(출처 : Krämer et al., 2013. Bioinformatics.), Gorden 외 연구진의 연구결과인 SARS-CoV-2와 숙주 단백질과의 상호 작용 정보를 바이러스 감염에 의해 영향을 받는 생물학적 기능 또는 질병에 연결되어 네트워크가 구성되었습니다.
Coronavirus Network Explorer에서 분석할 수 있는 것은 크게 다음과 같습니다.
  • SARS-CoV-2가 숙주에 미치는 영향을 설명하는 네트워크 탐색
  • 설정한 조건에서 유전자의 예측된 활동 패턴 표시
  • 바이러스의 효력에 영향을 줄 것으로 예상하는 약물의 잠재적 표적 유전자를 식별
Coronavirus Network Explorer의 구성을 자세히 살펴보도록 하겠습니다.
Coronavirus Network Explorer는 좌측 패널의 조정을 통해 원하는 네트워크를 도출하게 됩니다. 사용자가 원하는 설정을 할 수 있는 부분(빨간색)과 네트워크의 촉진/억제에 관련된 설명(파란색), 그리고 각 노드의 색에 대한 설명이 있는 부분(초록색)으로 나뉘게 됩니다(Fig.3).
Select Network 패널에서는 SARS-CoV-2와 인간의 단백질이 연관되어 있다고 예측된 네트워크들을 확인할 수 있습니다(Fig.4).
앞서 말씀드린 두 패널 아래에는 숙주 단백질과 상호 작용하는 바이러스 단백질에 의해 현재 보고 있는 해당 network가 촉진/억제되는 것으로 추측되는 결과라는 것을 알려줍니다(Fig.6, 파란색). 또한, 기존 약물 표적 유전자를 표시할 것인지의 여부와(빨간색) 억제/활성으로 추론되는 네트워크상 구성 노드의 표시 및 존재하는 약물 표적을 확인할 수 있습니다(초록색).
화면 가운데 영역은 각 패널에서 설정한 네트워크를 보여줍니다(Fig.7). Fig.7은 예시로, "Replication of coronavirus"라는 네트워크 정보입니다. 노드마다 생김새가 다른 것을 볼 수 있는데, Show Legend 버튼을 클릭하면 이 노드들이 어떤 기능을 하는지 확인할 수 있습니다. 노드들은 클릭 후 드래그를 통해 이동시킬 수 있습니다.
노드를 클릭하면 해당 노드에 관련된 정보를 화면 우측 영역에서 확인할 수 있습니다(Fig.8). 해당 영역에서 유전자 정보(왼쪽), 기존 약물 표적 단백질의 경우 약물 리스트를 볼 수 있습니다(오른쪽). Fig.8은 Replication of coronavirus 네트워크상의 CHRNA3 노드를 클릭한 결과입니다. IPA 사용자들은 더 자세한 유전자 정보와 약물 정보를 링크 클릭으로 확인할 수 있습니다.
이처럼 SARS-CoV-2의 단백질과 인간의 단백질이 상호작용하는 정보를 바탕으로, 어떤 네트워크들이 활성/억제될 것인지 예측된 결과를 Coronavirus Network Explorer를 통해 확인하는 방법을 알아보았습니다. 현재 COVID-19 관련 연구를 위하여 무료로 사용할 수 있으므로 치료제 개발에 도움이 되길 바라며, 하루빨리 연구가 진척되어 이 사태가 안정화되었으면 합니다.



  1. Gorden et al., 2020. A SARS-CoV-2 Protein Interaction Map Reveals Targets for Drug Repurposing. Nature, Online ahead of print. https://www.nature.com/articles/s41586-020-2286-9
  2. Krämer et al., 2013. Causal analysis approaches in Ingenuity Pathway Analysis. Bioinformatics, 30(4):523–530. https://academic.oup.com/bioinformatics/article/30/4/523/202720

작성 : insilico Lab 김형민 컨설턴트

Posted by 人Co

2020/07/17 12:48 2020/07/17 12:48
Response
No Trackback , No Comment
RSS :
https://post-blog.insilicogen.com/blog/rss/response/351



« Previous : 1 : ... 4 : 5 : 6 : 7 : 8 : 9 : 10 : 11 : 12 : ... 75 : Next »