테크놀로지 리더를 위한 전문 도서관
PrintBI/분석 / 머신러닝 / 클라우드2019.12.02
금융회사의 디지털화, 성공적인 여정을 위한 전략
IBM
금융 디지털 전환 전략의 성패는 고객이 원하는 뱅킹서비스를 디지털 환경에서 신속하게 제공할 수 있느냐의 문제로 종결된다. 이는 결국 금융회사가 가진 ‘데이터전략’과 인공지능(AI)기반 금융서비스의 내재화 성숙도의 문제이다. 금융회사들이 ‘데이터 중심 정보회사’ 전략에 사활을 거는 이유다.
문제는 금융회사가 이러한 ‘디지털전환’전략을 성공적으로 구현하기가 생각보다 매우 어렵다는 점이다. 그렇다면 금융회사가 ‘AI기반의 데이터 중심 정보회사’로 거듭나기 위한 빠르고 효과적인 전략은 없을까. 이에 IBM은 4단계로 구성된 ‘AI 사다리(Ladder)’ 전략과 이를 클라우드로 구현하기위한 ‘IBM Cloud Pak for Data’ 플랫폼을 제시하고 있다. 

주요 내용
-    금융서비스의 디지털화란 무엇인가?
-    “AI기반 데이터 중심 기업으로 성장”… IBM의 ‘AI 사다리’
-    AI 사다리’전략을 구현하는 플랫폼, ‘IBM Cloud Pak for Data’
-    IBM ‘왓슨’의 놀라운 역할… AI 편향성 위험 제거한 ‘왓슨 오픈스케일’
-    ‘데이터 중심 기업’에 도전하는 기업에게 드리는 4가지 조언
 AI사다리 / 금융서비스 / 데이터전략 / 인공지능
     다운로드     
추천 테크라이브러리

혁신 해법 ‘오픈소스’, 지원 해법 IBM 오픈소스서비스 - IDG Tech Dossier
“클라우드에서도 보안 책임은 기업 스스로” 클라우드 보안 과제와 기업의 대응 전략 - IDG DeepDive
소프트웨어 정의 스토리지의 총아, 오브젝트 스토리지의 이해와 도입시 고려해야 할 4가지 - IDG Summary
정보 아키텍처를 단순화하여 데이터 처리 : Cloud Pak for Data
금융회사의 디지털화, 성공적인 여정을 위한 전략
롯데백화점, 인공 지능 기술로 온·오프라인 고객 경험 시너지와 개인화 서비스 증대
 
 백업 전략으로 데이터 보호하기

추천기사
'홀린듯 당한다'··· 최신 모바일 공격 기법 7가지'흔들리며 피는 꽃'··· 프로젝트 반발에 대한 8가지 조언김진철의 How-to-Big Data | 빅데이터의 미래 (1)협업 앱, 기싸움이 시작됐다··· '마이크로소프트 vs. 슬랙'디지털 변혁 시대의 임직원 교육 '핵심은 경험이다'

ITworld Korea

News
뉴스
인사이트
슬라이드쇼
How To
테크비디오
오피니언
Topics
클라우드
빅데이터
보안
사물인터넷
iOS
안드로이드
개발자
Business
테크라이브러리
테크서베이
테크퀴즈
컨퍼런스
마케팅 서비스
리서치 서비스
연락/문의
Join Us On
 Twitter
 Facebook
 RSS
IDG Network
Question 1 
가용한 모든 데이터의 효율적인 수집 및 관리
고품질의 데이터의 용이한 셀프 분석
머신러닝 모델의 개발 / 테스트 / 배포의 효율적 관리
신뢰성과 투명성을 갖춘 Al의 개발 / 운영 / 확산

보이스봇
챗봇
VOC 분석
상당 유형 분류
자동 문의 답변
상담원 지원 (답변 추천)


어느 정도 대응 가능하나 증설 혹은 교체를 고려중임
대응이 어려워 새로운 시스템/솔루션을 도입해야 할 상황임


IBM Analytics 브리핑- 머신러닝 및 인공지능 도입을 위한 Analytics 소개 세션 (1시간)
IBM Watson Studio 세션- 효과적인 데이터 사이언스 프로젝트 수행 방안 세션 ((1일, 무료)
Cloud Pak for Data 찾아가는 세미나 - 빠르고 안전하게 비즈니스에 활용할 수 있도록 직접 고객을 찾아가서 플랫폼 및 Use Case에 대한 상세 브리핑 제공 (2시간
전문가 상담 신청 (전화 상담)


이메일로
전화로
우편으로


P.S 건물 1Cm만 옮겨주세요. 어려운거 아니잖아요. 아니예요. 다시 원복해 주세요.



BEST Image Picker

https://github.com/topics/imagepicker?l=objective-c

https://github.com/RITL/RITLImagePickerDemo
https://github.com/lincf0912/ImagePickerSheetViewController
https://github.com/zhangao0086/DKImagePickerController
https://github.com/Yummypets/YPImagePicker



 [[APDocument alloc] initWithString:anXMLString];



Existing instance variable 'parent' for property 'parent' with assign attribute must be __unsafe_unretained

optimization Level
Debug Fastest, Smallest [-Os]
Distribution
Debug Fastest, Smallest [-Os]
Release
Debug Fastest, Smallest [-Os]


티스토리 ioswift
 
직접 대면
전화
이메일
메신저
회식, 티타임 등 사석에서 이야기
게시판 
열린 조직 문화
나의 원만한 커뮤니케이션 능력
다른 사람의 이야기에 귀 기울이고, 수용할 줄 아는 동료, 상사, 후배
공식적인 커뮤니케이션 시스템의 체계적 확립
경영진과의 열린 소통
스킨십 프로그램
본부 간, 직급 간, 열린 소통
직원 사기진작 프로그램
커뮤니케이션 Tool (SNS 등)
본부 간, 팀 간 이기주의 타파
젊은 직원들의 소통채널
동영상 기반의 방송
모바일 서비스 (스마트폰에서 시청이 가능한)
블로그 (사내블로그 활용한 사내커뮤니케이션)


- (IBAction)onClickCheckingCategory:(id)sender {
       self.title = @"이전";

saparator none

1) 올플래시

2) 미드레인지 스토리지 (스토와이즈)

3) 하이브리드 플래시

4) 테이프, 가상화 테이프

5) 소프트웨어 정의 스토리지

6) 오브젝트 스토리지


'Blog History' 카테고리의 다른 글

아이폰 개발자가 추천하는 걷기 앱  (0) 2019.12.23
아이폰 개발자가 추천하는 캘린더  (0) 2019.12.23
개 발 일 지 062  (0) 2019.12.17
개 발 일 지 061  (0) 2019.12.17
개 발 일 지 060  (0) 2019.12.13

https://www.google.com/search?q=%22Failed+to+invoke+the+interpreter+with+error%22&oq=%22Failed+to+invoke+the+interpreter+with+error%22&aqs=chrome.0.69i59j69i60.4768j0j7&sourceid=chrome&ie=UTF-8

https://books.google.co.kr/books?id=e--oDwAAQBAJ&pg=PA145&lpg=PA145&dq=%22Failed+to+invoke+the+interpreter+with+error%22&source=bl&ots=CqkTVIC9Gb&sig=ACfU3U1g0P6zHckN-f8lYSDoypASxlZMrw&hl=ko&sa=X&ved=2ahUKEwi0wpGpv7vmAhUBMN4KHWDdAG4Q6AEwAHoECAkQAQ#v=onepage&q=%22Failed%20to%20invoke%20the%20interpreter%20with%20error%22&f=false


func runModel(onFrame pixelBuffer: CVPixelBuffer) -> Result? {
    let sourcePixelFormat = CVPixelBufferGetPixelFormatType(pixelBuffer)
    assert(sourcePixelFormat == kCVPixelFormatType_32ARGB ||
             sourcePixelFormat == kCVPixelFormatType_32BGRA ||
               sourcePixelFormat == kCVPixelFormatType_32RGBA)


    let imageChannels = 4
    assert(imageChannels >= inputChannels)

    // Crops the image to the biggest square in the center and scales it down to model dimensions.
    let scaledSize = CGSize(width: inputWidth, height: inputHeight)
    guard let thumbnailPixelBuffer = pixelBuffer.centerThumbnail(ofSize: scaledSize) else {
      return nil
    }

    let interval: TimeInterval
    let outputTensor: Tensor
    do {
      let inputTensor = try interpreter.input(at: 0)

      // Remove the alpha component from the image buffer to get the RGB data.
      guard let rgbData = rgbDataFromBuffer(
        thumbnailPixelBuffer,
        byteCount: batchSize * inputWidth * inputHeight * inputChannels,
        isModelQuantized: inputTensor.dataType == .uInt8
      ) else {
        print("Failed to convert the image buffer to RGB data.")
        return nil
      }

      // Copy the RGB data to the input `Tensor`.
      try interpreter.copy(rgbData, toInputAt: 0)

      // Run inference by invoking the `Interpreter`.
      let startDate = Date()
      try interpreter.invoke()
      interval = Date().timeIntervalSince(startDate) * 1000

      // Get the output `Tensor` to process the inference results.
      outputTensor = try interpreter.output(at: 0)
    } catch let error {
      print("Failed to invoke the interpreter with error: \(error.localizedDescription)")
      return nil
    }

    let results: [Float]
    switch outputTensor.dataType {
    case .uInt8:
      guard let quantization = outputTensor.quantizationParameters else {
        print("No results returned because the quantization values for the output tensor are nil.")
        return nil
      }
      let quantizedResults = [UInt8](outputTensor.data)
      results = quantizedResults.map {
        quantization.scale * Float(Int($0) - quantization.zeroPoint)
      }
    case .float32:
      results = [Float32](unsafeData: outputTensor.data) ?? []
    default:
      print("Output tensor data type \(outputTensor.dataType) is unsupported for this example app.")
      return nil
    }

    // Process the results.
    let topNInferences = getTopN(results: results)

    // Return the inference time and inference results.
    return Result(inferenceTime: interval, inferences: topNInferences)
  }


Xcode 11
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Library/Developer/CoreSimulator/Profiles/Runtimes/iOS.simruntime/Contents/Resources/RuntimeRoot/usr/lib/
put tbd copy to the path:

/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk/usr/lib/

architecture x86_64 in file 


I've faced the same issue after updating to xcode 10. I've resolved this issue by downloading libstdc++.6.0.9.tbd and libstdc++.6.tbd from https://github.com/Kila2/libstdc-.6.0.9.tbd.

then i copied these files to my project folder. After that I added these libs in Linked Frameworks and Libraries by following these steps: Project > Target > General > Linked Frameworks and Libraries click (+) > Click 'Add Other' > Navigat to your project folder in 'Open File' and select these libraries and add.

Now run the project it will run perfectly..


변환한 텐서 모델은 안드로이드에서 잘 되는데 iOS 지원 바로 안되게 되어 있는 듯.
libc 6.0은 dylib가 아니라 tbd만 올려서 해결. 시뮬레이터에서는 안됨. 제길슨.



'Blog History' 카테고리의 다른 글

아이폰 개발자가 추천하는 캘린더  (0) 2019.12.23
063  (0) 2019.12.19
개 발 일 지 061  (0) 2019.12.17
개 발 일 지 060  (0) 2019.12.13
개 발 일 지 059  (0) 2019.12.13

 3  sudo apt install python3-pip3 -y
    4  pip33 install --user --upgrade tensorflow
    5  history
    6  python -c "import tensorflow as tf;print(tf.reduce_sum(tf.random.normal([1000, 1000])))"



    5  sudo apt install git -y
    6  git clone https://github.com/tensorflow/models.git


joe@ubuntu:~/ai/models/research$ export PYTHONPATH=$(pwd):$(pwd)/slim
joe@ubuntu:~/ai/models/research$ echo $PYTHONPATH
/home/joe/ai/models/research:/home/joe/ai/models/research/slim


import os 
import sys 
args = sys.argv 
directory = args[1] 
protoc_path = args[2] 
for file in os.listdir(directory):
if file.endswith(".proto"):
os.system(protoc_path+" "+directory+"/"+file+" --python_out=.")


     pip3 install protobuf
       pip3 install pillow
       pip3 install lxml
       pip3 install Cython
       pip3 install jupyter
       pip3 install matplotlib
       pip3 install pandas
       pip3 install opencv-python 


joe@ubuntu:~/ai/models/research$ sudo apt install protobuf -y
Reading package lists... Done
Building dependency tree       
Reading state information... Done

No apt package "protobuf", but there is a snap with that name.
Try "snap install protobuf"

E: Unable to locate package protobuf
joe@ubuntu:~/ai/models/research$ snap install protobuf
error: This revision of snap "protobuf" was published using classic confinement and
       thus may perform arbitrary system changes outside of the security sandbox that
       snaps are usually confined to, which may put your system at risk.

       If you understand and want to proceed repeat the command including --classic.
joe@ubuntu:~/ai/models/research$ snap install protobuf --classic


models/research$ python3 test.py ./object_detection/protos/ /snap/bin/protoc
joe@ubuntu:~/ai/models/research$ 


   43  python3 setup.py build
   44  python3 setup.py install
   45  sudo python3 setup.py install


....

i     echo $PYTHONPATH
     sudo apt install vim -y
     python3 test.py ./object_detection/protos/ ./bin/protoc
     whereis protoc
     sudo updatedb
     locate protoc | grep bin
     sudo apt install protobuf -y
     snap install protobuf
     snap install protobuf --classic
     python3 test.py ./object_detection/protos/ /snap/bin/protoc
     python3 setup.py build
     sudo python3 setup.py install
     jupyter notebook object_detection_tutorial.ipynb
     sudo snap install jupyter
     sudo apt install jupyter-core -y
     ls
     jupyter notebook object_detection_tutorial.ipynb
     ls
     find ./ -type f -iname "object*.ipynb"
     cd research/object_detection
     sudo -H pip3 install --upgrade pip
     sudo -H pip3 install jupyter
     python3 -m notebook ./object_detection_tutorial.ipynb 


https://teachablemachine.withgoogle.com/



Failed to invoke the interpreter with error: Provided data count 1080000 must match the required count 602112.





'Blog History' 카테고리의 다른 글

063  (0) 2019.12.19
개 발 일 지 062  (0) 2019.12.17
개 발 일 지 060  (0) 2019.12.13
개 발 일 지 059  (0) 2019.12.13
개 발 일 지 058  (0) 2019.12.13

 3  sudo apt install python3-pip3 -y
    4  pip33 install --user --upgrade tensorflow
    5  history
    6  python -c "import tensorflow as tf;print(tf.reduce_sum(tf.random.normal([1000, 1000])))"



    5  sudo apt install git -y
    6  git clone https://github.com/tensorflow/models.git


joe@ubuntu:~/ai/models/research$ export PYTHONPATH=$(pwd):$(pwd)/slim
joe@ubuntu:~/ai/models/research$ echo $PYTHONPATH
/home/joe/ai/models/research:/home/joe/ai/models/research/slim


import os 
import sys 
args = sys.argv 
directory = args[1] 
protoc_path = args[2] 
for file in os.listdir(directory):
if file.endswith(".proto"):
os.system(protoc_path+" "+directory+"/"+file+" --python_out=.")


     pip3 install protobuf
       pip3 install pillow
       pip3 install lxml
       pip3 install Cython
       pip3 install jupyter
       pip3 install matplotlib
       pip3 install pandas
       pip3 install opencv-python 


joe@ubuntu:~/ai/models/research$ sudo apt install protobuf -y
Reading package lists... Done
Building dependency tree       
Reading state information... Done

No apt package "protobuf", but there is a snap with that name.
Try "snap install protobuf"

E: Unable to locate package protobuf
joe@ubuntu:~/ai/models/research$ snap install protobuf
error: This revision of snap "protobuf" was published using classic confinement and
       thus may perform arbitrary system changes outside of the security sandbox that
       snaps are usually confined to, which may put your system at risk.

       If you understand and want to proceed repeat the command including --classic.
joe@ubuntu:~/ai/models/research$ snap install protobuf --classic


models/research$ python3 test.py ./object_detection/protos/ /snap/bin/protoc
joe@ubuntu:~/ai/models/research$ 


   43  python3 setup.py build
   44  python3 setup.py install
   45  sudo python3 setup.py install


....

i     echo $PYTHONPATH
     sudo apt install vim -y
     python3 test.py ./object_detection/protos/ ./bin/protoc
     whereis protoc
     sudo updatedb
     locate protoc | grep bin
     sudo apt install protobuf -y
     snap install protobuf
     snap install protobuf --classic
     python3 test.py ./object_detection/protos/ /snap/bin/protoc
     python3 setup.py build
     sudo python3 setup.py install
     jupyter notebook object_detection_tutorial.ipynb
     sudo snap install jupyter
     sudo apt install jupyter-core -y
     ls
     jupyter notebook object_detection_tutorial.ipynb
     ls
     find ./ -type f -iname "object*.ipynb"
     cd research/object_detection
     sudo -H pip3 install --upgrade pip
     sudo -H pip3 install jupyter
     python3 -m notebook ./object_detection_tutorial.ipynb 

'Blog History' 카테고리의 다른 글

개 발 일 지 062  (0) 2019.12.17
개 발 일 지 061  (0) 2019.12.17
개 발 일 지 059  (0) 2019.12.13
개 발 일 지 058  (0) 2019.12.13
개 발 일 지 057  (0) 2019.12.13

Version:1.0 StartHTML:0000000100 EndHTML:0003685829 StartFragment:0000000100 EndFragment:0003685829

 

 

object_detection_tutorial Last Checkpoint: a few seconds ago (autosaved)

Python 3

 

 

 

Object Detection API Demo

Run in Google Colab View source on GitHub

Welcome to the Object Detection API. This notebook will walk you step by step through the process of using a pre-trained model to detect objects in an image.

Important: This tutorial is to help you through the first step towards using Object Detection API to build models. If you just just need an off the shelf model that does the job, see the TFHub object detection example.

Setup

Important: If you're running on a local machine, be sure to follow the installation instructions. This notebook includes only what's necessary to run in Colab.

Install

 

 

 

!pip install -U --pre --user tensorflow=="2.*"

Collecting tensorflow==2.* Using cached https://files.pythonhosted.org/packages/d5/97/fbec42dfdb93a37ec971ca0996ff70b8eb5817789a9c1880aafd4684c9af/tensorflow-2.1.0rc1-cp36-cp36m-manylinux2010_x86_64.whl Requirement already satisfied, skipping upgrade: numpy<2.0,>=1.16.0 in /home/joe/.local/lib/python3.6/site-packages (from tensorflow==2.*) (1.17.4) Collecting tensorflow-estimator<2.2.0,>=2.1.0rc0 Using cached https://files.pythonhosted.org/packages/54/3a/c3e5e835a1e0afd8106a06fdfdba1441915cc7b6e3852c7612f437f2887e/tensorflow_estimator-2.1.0rc0-py2.py3-none-any.whl Requirement already satisfied, skipping upgrade: wrapt>=1.11.1 in /home/joe/.local/lib/python3.6/site-packages (from tensorflow==2.*) (1.11.2) Requirement already satisfied, skipping upgrade: grpcio>=1.8.6 in /home/joe/.local/lib/python3.6/site-packages (from tensorflow==2.*) (1.25.0) Requirement already satisfied, skipping upgrade: six>=1.12.0 in /home/joe/.local/lib/python3.6/site-packages (from tensorflow==2.*) (1.13.0) Requirement already satisfied, skipping upgrade: absl-py>=0.7.0 in /home/joe/.local/lib/python3.6/site-packages (from tensorflow==2.*) (0.8.1) Processing /home/joe/.cache/pip/wheels/2c/b1/94/43d03e130b929aae7ba3f8d15cbd7bc0d1cb5bb38a5c721833/opt_einsum-3.1.0-cp36-none-any.whl Requirement already satisfied, skipping upgrade: protobuf>=3.8.0 in /home/joe/.local/lib/python3.6/site-packages (from tensorflow==2.*) (3.11.1) Requirement already satisfied, skipping upgrade: termcolor>=1.1.0 in /home/joe/.local/lib/python3.6/site-packages (from tensorflow==2.*) (1.1.0) Requirement already satisfied, skipping upgrade: wheel>=0.26; python_version >= "3" in /home/joe/.local/lib/python3.6/site-packages (from tensorflow==2.*) (0.33.6) Requirement already satisfied, skipping upgrade: google-pasta>=0.1.6 in /home/joe/.local/lib/python3.6/site-packages (from tensorflow==2.*) (0.1.8) Requirement already satisfied, skipping upgrade: astor>=0.6.0 in /home/joe/.local/lib/python3.6/site-packages (from tensorflow==2.*) (0.8.1) Collecting tensorboard<2.2.0,>=2.1.0 Using cached https://files.pythonhosted.org/packages/40/23/53ffe290341cd0855d595b0a2e7485932f473798af173bbe3a584b99bb06/tensorboard-2.1.0-py3-none-any.whl Requirement already satisfied, skipping upgrade: keras-preprocessing>=1.1.0 in /home/joe/.local/lib/python3.6/site-packages (from tensorflow==2.*) (1.1.0) Requirement already satisfied, skipping upgrade: keras-applications>=1.0.8 in /home/joe/.local/lib/python3.6/site-packages (from tensorflow==2.*) (1.0.8) Processing /home/joe/.cache/pip/wheels/5c/2e/7e/a1d4d4fcebe6c381f378ce7743a3ced3699feb89bcfbdadadd/gast-0.2.2-cp36-none-any.whl Requirement already satisfied, skipping upgrade: setuptools in /home/joe/.local/lib/python3.6/site-packages (from protobuf>=3.8.0->tensorflow==2.*) (42.0.2) Requirement already satisfied, skipping upgrade: markdown>=2.6.8 in /home/joe/.local/lib/python3.6/site-packages (from tensorboard<2.2.0,>=2.1.0->tensorflow==2.*) (3.1.1) Collecting google-auth<2,>=1.6.3 Using cached https://files.pythonhosted.org/packages/54/31/f944cbd5bdbcc90d5b36f0615036308c8ec1e41b4788da5b55d4900f6803/google_auth-1.8.2-py2.py3-none-any.whl Requirement already satisfied, skipping upgrade: werkzeug>=0.11.15 in /home/joe/.local/lib/python3.6/site-packages (from tensorboard<2.2.0,>=2.1.0->tensorflow==2.*) (0.16.0) Collecting google-auth-oauthlib<0.5,>=0.4.1 Using cached https://files.pythonhosted.org/packages/7b/b8/88def36e74bee9fce511c9519571f4e485e890093ab7442284f4ffaef60b/google_auth_oauthlib-0.4.1-py2.py3-none-any.whl Collecting requests<3,>=2.21.0 Using cached https://files.pythonhosted.org/packages/51/bd/23c926cd341ea6b7dd0b2a00aba99ae0f828be89d72b2190f27c11d4b7fb/requests-2.22.0-py2.py3-none-any.whl Requirement already satisfied, skipping upgrade: h5py in /home/joe/.local/lib/python3.6/site-packages (from keras-applications>=1.0.8->tensorflow==2.*) (2.10.0) Collecting rsa<4.1,>=3.1.4 Using cached https://files.pythonhosted.org/packages/02/e5/38518af393f7c214357079ce67a317307936896e961e35450b70fad2a9cf/rsa-4.0-py2.py3-none-any.whl Collecting cachetools<3.2,>=2.0.0 Using cached https://files.pythonhosted.org/packages/2f/a6/30b0a0bef12283e83e58c1d6e7b5aabc7acfc4110df81a4471655d33e704/cachetools-3.1.1-py2.py3-none-any.whl Collecting pyasn1-modules>=0.2.1 Using cached https://files.pythonhosted.org/packages/52/50/bb4cefca37da63a0c52218ba2cb1b1c36110d84dcbae8aa48cd67c5e95c2/pyasn1_modules-0.2.7-py2.py3-none-any.whl Collecting requests-oauthlib>=0.7.0 Using cached https://files.pythonhosted.org/packages/a3/12/b92740d845ab62ea4edf04d2f4164d82532b5a0b03836d4d4e71c6f3d379/requests_oauthlib-1.3.0-py2.py3-none-any.whl Requirement already satisfied, skipping upgrade: urllib3!=1.25.0,!=1.25.1,<1.26,>=1.21.1 in /usr/lib/python3/dist-packages (from requests<3,>=2.21.0->tensorboard<2.2.0,>=2.1.0->tensorflow==2.*) (1.22) Requirement already satisfied, skipping upgrade: idna<2.9,>=2.5 in /usr/lib/python3/dist-packages (from requests<3,>=2.21.0->tensorboard<2.2.0,>=2.1.0->tensorflow==2.*) (2.6) Requirement already satisfied, skipping upgrade: chardet<3.1.0,>=3.0.2 in /usr/lib/python3/dist-packages (from requests<3,>=2.21.0->tensorboard<2.2.0,>=2.1.0->tensorflow==2.*) (3.0.4) Requirement already satisfied, skipping upgrade: certifi>=2017.4.17 in /usr/lib/python3/dist-packages (from requests<3,>=2.21.0->tensorboard<2.2.0,>=2.1.0->tensorflow==2.*) (2018.1.18) Collecting pyasn1>=0.1.3 Using cached https://files.pythonhosted.org/packages/62/1e/a94a8d635fa3ce4cfc7f506003548d0a2447ae76fd5ca53932970fe3053f/pyasn1-0.4.8-py2.py3-none-any.whl Collecting oauthlib>=3.0.0 Using cached https://files.pythonhosted.org/packages/05/57/ce2e7a8fa7c0afb54a0581b14a65b56e62b5759dbc98e80627142b8a3704/oauthlib-3.1.0-py2.py3-none-any.whl Installing collected packages: tensorflow-estimator, opt-einsum, pyasn1, rsa, cachetools, pyasn1-modules, google-auth, oauthlib, requests, requests-oauthlib, google-auth-oauthlib, tensorboard, gast, tensorflow Found existing installation: tensorflow-estimator 1.14.0 Uninstalling tensorflow-estimator-1.14.0: Successfully uninstalled tensorflow-estimator-1.14.0 WARNING: The scripts pyrsa-decrypt, pyrsa-encrypt, pyrsa-keygen, pyrsa-priv2pub, pyrsa-sign and pyrsa-verify are installed in '/home/joe/.local/bin' which is not on PATH. Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location. WARNING: The script google-oauthlib-tool is installed in '/home/joe/.local/bin' which is not on PATH. Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location. Found existing installation: tensorboard 1.14.0 Uninstalling tensorboard-1.14.0: Successfully uninstalled tensorboard-1.14.0 WARNING: The script tensorboard is installed in '/home/joe/.local/bin' which is not on PATH. Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location. Found existing installation: gast 0.3.2 Uninstalling gast-0.3.2: Successfully uninstalled gast-0.3.2 Found existing installation: tensorflow 1.14.0 Uninstalling tensorflow-1.14.0: Successfully uninstalled tensorflow-1.14.0 WARNING: The scripts estimator_ckpt_converter, saved_model_cli, tensorboard, tf_upgrade_v2, tflite_convert, toco and toco_from_protos are installed in '/home/joe/.local/bin' which is not on PATH. Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location. Successfully installed cachetools-3.1.1 gast-0.2.2 google-auth-1.8.2 google-auth-oauthlib-0.4.1 oauthlib-3.1.0 opt-einsum-3.1.0 pyasn1-0.4.8 pyasn1-modules-0.2.7 requests-2.22.0 requests-oauthlib-1.3.0 rsa-4.0 tensorboard-2.1.0 tensorflow-2.1.0rc1 tensorflow-estimator-2.1.0rc0

Make sure you have pycocotools installed

 

 

 

 

!pip install --user pycocotools

Processing /home/joe/.cache/pip/wheels/dc/e6/36/0e1ae88c868eb42d3f92181b1c9bbd0b217a7ec3da6bd62e55/pycocotools-2.0.0-cp36-cp36m-linux_x86_64.whl Installing collected packages: pycocotools Successfully installed pycocotools-2.0.0

Get tensorflow/models or cd to parent directory of the repository.

 

 

 

import osimport pathlibif "models" in pathlib.Path.cwd().parts: while "models" in pathlib.Path.cwd().parts: os.chdir('..')elif not pathlib.Path('models').exists(): !git clone --depth 1 https://github.com/tensorflow/models

 

Compile protobufs and install the object_detection package

 

 

 

%%bashcd models/research/protoc object_detection/protos/*.proto --python_out=.

 

 

 

 

%%bash cd models/researchpip install --user .

Processing /home/joe/ai/models/research Requirement already satisfied: Pillow>=1.0 in /home/joe/.local/lib/python3.6/site-packages (from object-detection==0.1) (6.2.1) Requirement already satisfied: Matplotlib>=2.1 in /home/joe/.local/lib/python3.6/site-packages (from object-detection==0.1) (3.1.2) Requirement already satisfied: Cython>=0.28.1 in /home/joe/.local/lib/python3.6/site-packages (from object-detection==0.1) (0.29.14) Requirement already satisfied: pyparsing!=2.0.4,!=2.1.2,!=2.1.6,>=2.0.1 in /home/joe/.local/lib/python3.6/site-packages (from Matplotlib>=2.1->object-detection==0.1) (2.4.5) Requirement already satisfied: python-dateutil>=2.1 in /home/joe/.local/lib/python3.6/site-packages (from Matplotlib>=2.1->object-detection==0.1) (2.8.1) Requirement already satisfied: numpy>=1.11 in /home/joe/.local/lib/python3.6/site-packages (from Matplotlib>=2.1->object-detection==0.1) (1.17.4) Requirement already satisfied: cycler>=0.10 in /home/joe/.local/lib/python3.6/site-packages (from Matplotlib>=2.1->object-detection==0.1) (0.10.0) Requirement already satisfied: kiwisolver>=1.0.1 in /home/joe/.local/lib/python3.6/site-packages (from Matplotlib>=2.1->object-detection==0.1) (1.1.0) Requirement already satisfied: six>=1.5 in /home/joe/.local/lib/python3.6/site-packages (from python-dateutil>=2.1->Matplotlib>=2.1->object-detection==0.1) (1.13.0) Requirement already satisfied: setuptools in /home/joe/.local/lib/python3.6/site-packages (from kiwisolver>=1.0.1->Matplotlib>=2.1->object-detection==0.1) (42.0.2) Building wheels for collected packages: object-detection Building wheel for object-detection (setup.py): started Building wheel for object-detection (setup.py): finished with status 'done' Created wheel for object-detection: filename=object_detection-0.1-cp36-none-any.whl size=1018408 sha256=b7b6c58ff616468e23fbc4235cec9f629c4d20bbe64e97aa141002aabf96fcee Stored in directory: /tmp/pip-ephem-wheel-cache-27tuvthk/wheels/66/74/0f/57548ad5db5a02c1e963e016e857cda21c07d4640bd920543c Successfully built object-detection Installing collected packages: object-detection Successfully installed object-detection-0.1

Imports

 

 

 

import numpy as npimport osimport six.moves.urllib as urllibimport sysimport tarfileimport tensorflow as tfimport zipfilefrom collections import defaultdictfrom io import StringIOfrom matplotlib import pyplot as pltfrom PIL import Imagefrom IPython.display import display

 

Import the object detection module.

 

 

 

from object_detection.utils import ops as utils_opsfrom object_detection.utils import label_map_utilfrom object_detection.utils import visualization_utils as vis_util

 

Patches:

 

 

 

# patch tf1 into `utils.ops`utils_ops.tf = tf.compat.v1# Patch the location of gfiletf.gfile = tf.io.gfile

 

Model preparation

Variables

Any model exported using the export_inference_graph.py tool can be loaded here simply by changing the path.

By default we use an "SSD with Mobilenet" model here. See the detection model zoo for a list of other models that can be run out-of-the-box with varying speeds and accuracies.

Loader

 

 

 

def load_model(model_name): base_url = 'http://download.tensorflow.org/models/object_detection/' model_file = model_name + '.tar.gz' model_dir = tf.keras.utils.get_file( fname=model_name, origin=base_url + model_file, untar=True) model_dir = pathlib.Path(model_dir)/"saved_model" model = tf.saved_model.load(str(model_dir)) model = model.signatures['serving_default'] return model

 

Loading label map

Label maps map indices to category names, so that when our convolution network predicts 5, we know that this corresponds to airplane. Here we use internal utility functions, but anything that returns a dictionary mapping integers to appropriate string labels would be fine

 

 

 

 

# List of the strings that is used to add correct label for each box.PATH_TO_LABELS = 'models/research/object_detection/data/mscoco_label_map.pbtxt'category_index = label_map_util.create_category_index_from_labelmap(PATH_TO_LABELS, use_display_name=True)

 

For the sake of simplicity we will test on 2 images:

 

 

 

 

# If you want to test the code with your images, just add path to the images to the TEST_IMAGE_PATHS.PATH_TO_TEST_IMAGES_DIR = pathlib.Path('models/research/object_detection/test_images')TEST_IMAGE_PATHS = sorted(list(PATH_TO_TEST_IMAGES_DIR.glob("*.jpg")))TEST_IMAGE_PATHS

[PosixPath('models/research/object_detection/test_images/image1.jpg'), PosixPath('models/research/object_detection/test_images/image2.jpg')]

Detection

Load an object detection model:

 

 

 

model_name = 'ssd_mobilenet_v1_coco_2017_11_17'detection_model = load_model(model_name)

Downloading data from http://download.tensorflow.org/models/object_detection/ssd_mobilenet_v1_coco_2017_11_17.tar.gz 76537856/76534733 [==============================] - 19s 0us/step INFO:tensorflow:Saver not created because there are no variables in the graph to restore

Check the model's input signature, it expects a batch of 3-color images of type uint8:

 

 

 

print(detection_model.inputs)

[<tf.Tensor 'image_tensor:0' shape=(None, None, None, 3) dtype=uint8>]

And retuns several outputs:

 

 

 

detection_model.output_dtypes

{'detection_scores': tf.float32, 'detection_classes': tf.float32, 'num_detections': tf.float32, 'detection_boxes': tf.float32}

 

 

 

detection_model.output_shapes

{'detection_scores': TensorShape([None, 100]), 'detection_classes': TensorShape([None, 100]), 'num_detections': TensorShape([None]), 'detection_boxes': TensorShape([None, 100, 4])}

Add a wrapper function to call the model, and cleanup the outputs:

 

 

 

def run_inference_for_single_image(model, image): image = np.asarray(image) # The input needs to be a tensor, convert it using `tf.convert_to_tensor`. input_tensor = tf.convert_to_tensor(image) # The model expects a batch of images, so add an axis with `tf.newaxis`. input_tensor = input_tensor[tf.newaxis,...] # Run inference output_dict = model(input_tensor) # All outputs are batches tensors. # Convert to numpy arrays, and take index [0] to remove the batch dimension. # We're only interested in the first num_detections. num_detections = int(output_dict.pop('num_detections')) output_dict = {key:value[0, :num_detections].numpy() for key,value in output_dict.items()} output_dict['num_detections'] = num_detections # detection_classes should be ints. output_dict['detection_classes'] = output_dict['detection_classes'].astype(np.int64) # Handle models with masks: if 'detection_masks' in output_dict: # Reframe the the bbox mask to the image size. detection_masks_reframed = utils_ops.reframe_box_masks_to_image_masks( output_dict['detection_masks'], output_dict['detection_boxes'], image.shape[0], image.shape[1]) detection_masks_reframed = tf.cast(detection_masks_reframed > 0.5, tf.uint8) output_dict['detection_masks_reframed'] = detection_masks_reframed.numpy() return output_dict

 

Run it on each test image and show the results:

 

 

 

def show_inference(model, image_path): # the array based representation of the image will be used later in order to prepare the # result image with boxes and labels on it. image_np = np.array(Image.open(image_path)) # Actual detection. output_dict = run_inference_for_single_image(model, image_np) # Visualization of the results of a detection. vis_util.visualize_boxes_and_labels_on_image_array( image_np, output_dict['detection_boxes'], output_dict['detection_classes'], output_dict['detection_scores'], category_index, instance_masks=output_dict.get('detection_masks_reframed', None), use_normalized_coordinates=True, line_thickness=8) display(Image.fromarray(image_np))

 

 

 

 

for image_path in TEST_IMAGE_PATHS: show_inference(detection_model, image_path)

Instance Segmentation

 

 

 

model_name = "mask_rcnn_inception_resnet_v2_atrous_coco_2018_01_28"masking_model = load_model("mask_rcnn_inception_resnet_v2_atrous_coco_2018_01_28")

INFO:tensorflow:Saver not created because there are no variables in the graph to restore

The instance segmentation model includes a detection_masks output:

 

 

 

masking_model.output_shapes

 

 

 

 

for image_path in TEST_IMAGE_PATHS: show_inference(masking_model, image_path)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

'Blog History' 카테고리의 다른 글

개 발 일 지 061  (0) 2019.12.17
개 발 일 지 060  (0) 2019.12.13
개 발 일 지 058  (0) 2019.12.13
개 발 일 지 057  (0) 2019.12.13
개 발 일 지 056  (0) 2019.12.12

/AI/models-master/research  sudo chown -R $(whoami):admin /Library/Python/

python setup.py install


  File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/setuptools/sandbox.py", line 250, in run_setup
    _execfile(setup_script, ns)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/setuptools/sandbox.py", line 44, in _execfile
    code = compile(script, filename, 'exec')
  File "/var/folders/tl/fj2bb8c16_j3wp9r8770v8380000gn/T/easy_install-NWJPJ0/matplotlib-3.2.0rc1/setup.py", line 136
    raise IOError(f"Failed to download jquery-ui.  Please download "
                                                                   ^

models-master/research  sudo easy_install pip
Searching for pip
Reading https://pypi.org/simple/pip/
Downloading https://files.pythonhosted.org/packages/00/b6/9cfa56b4081ad13874b0c6f96af8ce16cfbc1cb06bedf8e9164ce5551ec1/pip-19.3.1-py2.py3-none-any.whl#sha256=6917c65fc3769ecdc61405d3dfd97afdedd75808d200b2838d7d961cebc0c2c7
Best match: pip 19.3.1
Processing pip-19.3.1-py2.py3-none-any.whl
Installing pip-19.3.1-py2.py3-none-any.whl to /Library/Python/2.7/site-packages
Adding pip 19.3.1 to easy-install.pth file
Installing pip script to /usr/local/bin
Installing pip3.7 script to /usr/local/bin
Installing pip3 script to /usr/local/bin

Installed /Library/Python/2.7/site-packages/pip-19.3.1-py2.7.egg
Processing dependencies for pip
Finished processing dependencies for pip

AI/models-master/research  pip install --verbose --no-binary :all: 'matplotlib==2.2.4'

Removed build tracker '/private/var/folders/tl/fj2bb8c16_j3wp9r8770v8380000gn/T/pip-req-tracker-r2EEVh'
ERROR: Command errored out with exit status 1: python setup.py egg_info Check the logs for full command output.

Downloading https://files.pythonhosted.org/packages/07/32/78676432117f2e0a40daa5f676233aa4914da5cc36126826a49f3c77b02b/matplotlib-3.2.0rc1.tar.gz#sha256=077b17f4bd73d322ee7322f6f029f5805e8a8db3ad972cb4a875ac40300ee842
Best match: matplotlib 3.2.0rc1
Processing matplotlib-3.2.0rc1.tar.gz
Writing /var/folders/tl/fj2bb8c16_j3wp9r8770v8380000gn/T/easy_install-85gP6h/matplotlib-3.2.0rc1/setup.cfg
Running matplotlib-3.2.0rc1/setup.py -q bdist_egg --dist-dir /var/folders/tl/fj2bb8c16_j3wp9r8770v8380000gn/T/easy_install-85gP6h/matplotlib-3.2.0rc1/egg-dist-tmp-sATGuT
Traceback (most recent call last):
  File "setup.py", line 15, in 
    description='Tensorflow Object Detection Library',
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/setuptools/__init__.py", line 145, in setup
    return distutils.core.setup(**attrs)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/distutils/core.py", line 151, in setup
    dist.run_commands()



REQUIRED_PACKAGES = ['Pillow>=1.0', 'Matplotlib>=2.1', 'Cython>=0.28.1']

deleting Matolotlib 




Installed /Library/Python/2.7/site-packages/Pillow-6.2.1-py2.7-macosx-10.15-x86_64.egg
Searching for Cython==0.29.14
Best match: Cython 0.29.14
Processing Cython-0.29.14-py2.7-macosx-10.15-x86_64.egg
Cython 0.29.14 is already the active version in easy-install.pth
Installing cython script to /usr/local/bin
Installing cygdb script to /usr/local/bin
Installing cythonize script to /usr/local/bin

Using /Library/Python/2.7/site-packages/Cython-0.29.14-py2.7-macosx-10.15-x86_64.egg
Finished processing dependencies for object-detection==0.1



from absl.testing import parameterized
ImportError: No module named absl.testing
 ✘ junhoha  AI/models-master/research  sudo pip install absl-py


AI/models-master/research  pip install --upgrade tensorflow


Building wheels for collected packages: gast, wrapt, keras-applications, functools32, opt-einsum, termcolor
  WARNING: Building wheel for gast failed: [Errno 13] Permission denied: '/Users/junhoha/Library/Caches/pip/wheels/5c'
  WARNING: Building wheel for wrapt failed: [Errno 13] Permission denied: '/Users/junhoha/Library/Caches/pip/wheels/d7'
  WARNING: Building wheel for keras-applications failed: [Errno 13] Permission denied: '/Users/junhoha/Library/Caches/pip/wheels/dd'
  WARNING: Building wheel for functools32 failed: [Errno 13] Permission denied: '/Users/junhoha/Library/Caches/pip/wheels/b5'
  WARNING: Building wheel for opt-einsum failed: [Errno 13] Permission denied: '/Users/junhoha/Library/Caches/pip/wheels/51'
  WARNING: Building wheel for termcolor failed: [Errno 13] Permission denied: '/Users/junhoha/Library/Caches/pip/wheels/7c'
Failed to build gast wrapt keras-applications functools32 opt-einsum termcolor
ERROR: matplotlib 1.3.1 requires nose, which is not installed.
ERROR: matplotlib 1.3.1 requires tornado, which is not installed.
Installing collected packages: numpy, funcsigs, mock, gast, futures, grpcio, keras-preprocessing, wrapt, protobuf, h5py, keras-applications, tensorflow-estimator, functools32, opt-einsum, backports.weakref, google-pasta, oauthlib, chardet, idna, urllib3, certifi, requests, requests-oauthlib, pyasn1, pyasn1-modules, rsa, cachetools, google-auth, google-auth-oauthlib, werkzeug, markdown, tensorboard, termcolor, astor, tensorflow
  Found existing installation: numpy 1.8.0rc1
ERROR: Cannot uninstall 'numpy'. It is a distutils installed project and thus we cannot accurately determine which files belong to it which would lead to only a partial uninstall.
 ✘ junhoha  ~/Desktop/AI/models-master/research  history | grep chown
 1141  sudo chown -R $USER:admin /usr/local /Library/Caches/Homebrew
 1142  sudo chown -R junhoha:admin /usr/local /Library/Caches/Homebrew
 1143  sudo chown -R junhoha:junhoha /usr/local /Library/Caches/Homebrew
 1144  sudo chown -R junhoha:junhohOBa /usr/local /Library/Caches/Homebrew
 1147  sudo chown -R root:root /usr/local /Library/Caches/Homebrew
 1148  sudo chown -R root:admin /usr/local /Library/Caches/Homebrew
 1166  sudo chown -R $(whoami):admin /usr/local/Library/Taps/*/**/.git
 1167  sudo chown -R $(whoami):admin /usr/local/Homebrew/.git
 1169  sudo chown -R $(whoami):admin /usr/local/Homebrew/
 1176  sudo chown -R $(whoami):admin /usr/local/etc
 1177  sudo chown -R $(whoami):admin /usr/local/share
 1197  sudo chown -R $(whoami):admin /Library/Python/
 junhoha  ~/Desktop/AI/models-master/research  !1148
 junhoha  ~/Desktop/AI/models-master/research  sudo chown -R $(whoami):admin /Users/junhoha/Library/


pip install nose
pip install tornado


AI/models-master/research  python object_detection/builders/model_builder_test.py
Traceback (most recent call last):
  File "object_detection/builders/model_builder_test.py", line 20, in 
    import tensorflow as tf
ImportError: No module named tensorflow

AI/models-master/research  python -c "import tensorflow as tf;print(tf.reduce_sum(tf.random.normal([1000, 1000])))"
Traceback (most recent call last):
  File "", line 1, in 
ImportError: No module named tensorflow

export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/mac/tensorflow-0.9.0-py2-none-any.whl

sudo pip install --upgrade $TF_BINARY_URL

AI/models-master/research  sudo pip install --upgrade $TF_BINARY_URL
DEPRECATION: Python 2.7 will reach the end of its life on January 1st, 2020. Please upgrade your Python as Python 2.7 won't be maintained after that date. A future version of pip will drop support for Python 2.7. More details about Python 2 support in pip, can be found at https://pip.pypa.io/en/latest/development/release-process/#python-2-support
WARNING: The directory '/Users/junhoha/Library/Caches/pip/http' or its parent directory is not owned by the current user and the cache has been disabled. Please check the permissions and owner of that directory. If executing pip with sudo, you may want sudo's -H flag.
WARNING: The directory '/Users/junhoha/Library/Caches/pip' or its parent directory is not owned by the current user and caching wheels has been disabled. check the permissions and owner of that directory. If executing pip with sudo, you may want sudo's -H flag.
Collecting tensorflow==0.9.0
  Downloading https://storage.googleapis.com/tensorflow/mac/tensorflow-0.9.0-py2-none-any.whl (25.8MB)
     |████████████████████████████████| 25.8MB 8.7MB/s
Requirement already satisfied, skipping upgrade: six>=1.10.0 in /System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python (from tensorflow==0.9.0) (1.12.0)
Collecting protobuf==3.0.0b2
  Downloading https://files.pythonhosted.org/packages/00/8e/9a3feb39d464eb7aacc108e6e6e1f2368ec741821486964c4cd0f41baabb/protobuf-3.0.0b2-py2.py3-none-any.whl (326kB)
     |████████████████████████████████| 327kB 149kB/s
Collecting numpy>=1.10.1
  Downloading https://files.pythonhosted.org/packages/51/67/8907005262f493e356195bcbd61b41988eecf63cb1d97ea2f6e55fe24205/numpy-1.16.5-cp27-cp27m-macosx_10_9_x86_64.whl (13.9MB)
     |████████████████████████████████| 13.9MB 1.5MB/s
Requirement already satisfied, skipping upgrade: wheel in /System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python (from tensorflow==0.9.0) (0.33.1)
Requirement already satisfied, skipping upgrade: setuptools in /System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python (from protobuf==3.0.0b2->tensorflow==0.9.0) (41.0.1)
Installing collected packages: protobuf, numpy, tensorflow
  Found existing installation: numpy 1.8.0rc1
ERROR: Cannot uninstall 'numpy'. It is a distutils installed project and thus we cannot accurately determine which files belong to it which would lead to only a partial uninstall.

AI/models-master/research  python -c "import tensorflow as tf;print(tf.reduce_sum(tf.random.normal([1000, 1000])))"
Traceback (most recent call last):
  File "", line 1, in 
ImportError: No module named tensorflow

AI/models-master/research  python --version
Python 2.7.16

AI/models-master/research  export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/mac/cpu/tensorflow-2.0.0-py2-none-any.whl
 junhoha  ~/Desktop/AI/models-master/research  sudo pip install --upgrade $TF_BINARY_URL
DEPRECATION: Python 2.7 will reach the end of its life on January 1st, 2020. Please upgrade your Python as Python 2.7 won't be maintained after that date. A future version of pip will drop support for Python 2.7. More details about Python 2 support in pip, can be found at https://pip.pypa.io/en/latest/development/release-process/#python-2-support
WARNING: The directory '/Users/junhoha/Library/Caches/pip/http' or its parent directory is not owned by the current user and the cache has been disabled. Please check the permissions and owner of that directory. If executing pip with sudo, you may want sudo's -H flag.
WARNING: The directory '/Users/junhoha/Library/Caches/pip' or its parent directory is not owned by the current user and caching wheels has been disabled. check the permissions and owner of that directory. If executing pip with sudo, you may want sudo's -H flag.
Collecting tensorflow==2.0.0
  ERROR: HTTP error 404 while getting https://storage.googleapis.com/tensorflow/mac/cpu/tensorflow-2.0.0-py2-none-any.whl
  ERROR: Could not install requirement tensorflow==2.0.0 from https://storage.googleapis.com/tensorflow/mac/cpu/tensorflow-2.0.0-py2-none-any.whl because of error 404 Client Error: Not Found for url: https://storage.googleapis.com/tensorflow/mac/cpu/tensorflow-2.0.0-py2-none-any.whl
ERROR: Could not install requirement tensorflow==2.0.0 from https://storage.googleapis.com/tensorflow/mac/cpu/tensorflow-2.0.0-py2-none-any.whl because of HTTP error 404 Client Error: Not Found for url: https://storage.googleapis.com/tensorflow/mac/cpu/tensorflow-2.0.0-py2-none-any.whl for URL https://storage.googleapis.com/tensorflow/mac/cpu/tensorflow-2.0.0-py2-none-any.whl


 pip install tensorflow-gpu
DEPRECATION: Python 2.7 will reach the end of its life on January 1st, 2020. Please upgrade your Python as Python 2.7 won't be maintained after that date. A future version of pip will drop support for Python 2.7. More details about Python 2 support in pip, can be found at https://pip.pypa.io/en/latest/development/release-process/#python-2-support
Collecting tensorflow-gpu
  Downloading https://files.pythonhosted.org/packages/d3/84/87cd052ffdb04c50985cdf23ac18fa6d479b916bc7048a05096eb2c522a0/tensorflow_gpu-1.1.0-cp27-cp27m-macosx_10_11_x86_64.whl (80.5MB)
     |████████████▎                   | 30.9MB 1.6MB/s eta 0:00:32


junhoha  ~/Desktop/hajunho/AI/models-master/research  python -c "import tensorflow as tf;print(tf.reduce_sum(tf.random.normal([1000, 1000])))"
dyld: warning, LC_RPATH $ORIGIN/../../_solib_darwin/_U@local_Uconfig_Ucuda_S_Scuda_Ccublas___Uexternal_Slocal_Uconfig_Ucuda_Scuda_Slib in /Users/junhoha/Library/Python/2.7/lib/python/site-packages/tensorflow/python/_pywrap_tensorflow_internal.so being ignored in restricted program because it is a relative path
dyld: warning, LC_RPATH $ORIGIN/../../_solib_darwin/_U@local_Uconfig_Ucuda_S_Scuda_Ccuda_Udriver___Uexternal_Slocal_Uconfig_Ucuda_Scuda_Slib in /Users/junhoha/Library/Python/2.7/lib/python/site-packages/tensorflow/python/_pywrap_tensorflow_internal.so being ignored in restricted program because it is a relative path
dyld: warning, LC_RPATH $ORIGIN/../../_solib_darwin/_U@local_Uconfig_Ucuda_S_Scuda_Ccudnn___Uexternal_Slocal_Uconfig_Ucuda_Scuda_Slib in /Users/junhoha/Library/Python/2.7/lib/python/site-packages/tensorflow/python/_pywrap_tensorflow_internal.so being ignored in restricted program because it is a relative path
dyld: warning, LC_RPATH $ORIGIN/../../_solib_darwin/_U@local_Uconfig_Ucuda_S_Scuda_Ccufft___Uexternal_Slocal_Uconfig_Ucuda_Scuda_Slib in /Users/junhoha/Library/Python/2.7/lib/python/site-packages/tensorflow/python/_pywrap_tensorflow_internal.so being ignored in restricted program because it is a relative path
dyld: warning, LC_RPATH $ORIGIN/../../_solib_darwin/_U@local_Uconfig_Ucuda_S_Scuda_Ccurand___Uexternal_Slocal_Uconfig_Ucuda_Scuda_Slib in /Users/junhoha/Library/Python/2.7/lib/python/site-packages/tensorflow/python/_pywrap_tensorflow_internal.so being ignored in restricted program because it is a relative path
dyld: warning, LC_RPATH $ORIGIN/../../_solib_darwin/_U@local_Uconfig_Ucuda_S_Scuda_Ccudart___Uexternal_Slocal_Uconfig_Ucuda_Scuda_Slib in /Users/junhoha/Library/Python/2.7/lib/python/site-packages/tensorflow/python/_pywrap_tensorflow_internal.so being ignored in restricted program because it is a relative path
dyld: warning, LC_RPATH ../local_config_cuda/cuda/lib in /Users/junhoha/Library/Python/2.7/lib/python/site-packages/tensorflow/python/_pywrap_tensorflow_internal.so being ignored in restricted program because it is a relative path
dyld: warning, LC_RPATH ../local_config_cuda/cuda/extras/CUPTI/lib in /Users/junhoha/Library/Python/2.7/lib/python/site-packages/tensorflow/python/_pywrap_tensorflow_internal.so being ignored in restricted program because it is a relative path
Traceback (most recent call last):
  File "", line 1, in 
  File "/Users/junhoha/Library/Python/2.7/lib/python/site-packages/tensorflow/__init__.py", line 24, in 
    from tensorflow.python import *
  File "/Users/junhoha/Library/Python/2.7/lib/python/site-packages/tensorflow/python/__init__.py", line 51, in 
    from tensorflow.python import pywrap_tensorflow
  File "/Users/junhoha/Library/Python/2.7/lib/python/site-packages/tensorflow/python/pywrap_tensorflow.py", line 52, in 
    raise ImportError(msg)
ImportError: Traceback (most recent call last):
  File "/Users/junhoha/Library/Python/2.7/lib/python/site-packages/tensorflow/python/pywrap_tensorflow.py", line 41, in 
    from tensorflow.python.pywrap_tensorflow_internal import *
  File "/Users/junhoha/Library/Python/2.7/lib/python/site-packages/tensorflow/python/pywrap_tensorflow_internal.py", line 28, in 
    _pywrap_tensorflow_internal = swig_import_helper()
  File "/Users/junhoha/Library/Python/2.7/lib/python/site-packages/tensorflow/python/pywrap_tensorflow_internal.py", line 24, in swig_import_helper
    _mod = imp.load_module('_pywrap_tensorflow_internal', fp, pathname, description)
ImportError: dlopen(/Users/junhoha/Library/Python/2.7/lib/python/site-packages/tensorflow/python/_pywrap_tensorflow_internal.so, 10): Library not loaded: @rpath/libcublas.8.0.dylib
  Referenced from: /Users/junhoha/Library/Python/2.7/lib/python/site-packages/tensorflow/python/_pywrap_tensorflow_internal.so
  Reason: image not found


Failed to load the native TensorFlow runtime.


brew install python


python3
Python 3.7.3 (default, Nov 15 2019, 04:04:52)
[Clang 11.0.0 (clang-1100.0.33.16)] on darwin
Type "help", "copyright", "credits" or "license" for more information.


sudo ln -s /usr/libexec/locate.updatedb /usr/local/bin/updatedb


buy paralles
install ubuntu 18.04.3

.
.
.
quit doing on mac

18.04.3 깔고...
sudo apt install python3-pip
pip3 install --user --upgrade tensorflow

단 2줄에 설치 끝.

python3 -c "import tensorflow as tf;print(tf.reduce_sum(tf.random.normal([1000, 1000])))"
/home/joe/.local/lib/python3.6/site-packages/tensorflow/python/framework/dtypes.py:516: FutureWarning: Passing (type, 1) or '1type' as a synonym of type is deprecated; in a future version of numpy, it will be understood as (type, (1,)) / '(1,)type'.



'Blog History' 카테고리의 다른 글

개 발 일 지 060  (0) 2019.12.13
개 발 일 지 059  (0) 2019.12.13
개 발 일 지 057  (0) 2019.12.13
개 발 일 지 056  (0) 2019.12.12
개 발 일 지 055  (0) 2019.12.11

https://github.com/tensorflow/models

AI  brew install protoc

Cellar is not writable. You should change the
ownership and permissions of

sudo chown -R $USER:admin /usr/local /Library/Caches/Homebrew

AI/models-master/research

brew tap homebrew/versions
brew install protobuf241

usr/local/Homebrew/.git/FETCH_HEAD: Permission denied


sudo chown -R $(whoami):admin /usr/local/Homebrew/.git

ermission denied
fatal: cannot create directory at 'Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.37.0': Permission denied
error: cannot rebase: You have unstaged changes.
error: Please commit or stash them.
To restore the stashed changes to /usr/local/Homebrew run:
  'cd /usr/local/Homebrew && git stash pop'
Error: homebrew/versions was deprecated. This tap is now empty as all its formulae were migrated.
 ✘ junhoha  ~  sudo chown -R $(whoami):admin /usr/local/Homebrew/

Error: homebrew/versions was deprecated. This tap is now empty as all its formulae were migrated.

brew install protobuf241


==> Searching taps...
==> Searching taps on GitHub...
Error: No formulae found in taps.


✘ junhoha  ~  rm -rf /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core; brew update
Already up-to-date.
 junhoha  ~  brew install protobuf241

==> Tapping homebrew/core
Cloning into '/usr/local/Homebrew/Library/Taps/homebrew/homebrew-core'...
remote: Enumerating objects: 5092, done.
remote: Counting objects: 100% (5092/5092), done.
remote: Compressing objects: 100% (4888/4888), done.
remote: Total 5092 (delta 50), reused 314 (delta 8), pack-reused 0
Receiving objects: 100% (5092/5092), 4.13 MiB | 2.90 MiB/s, done.
Resolving deltas: 100% (50/50), done.

 ✘ junhoha  ~  brew install protobuf

Error: The following directories are not writable by your user:
/usr/local/etc/bash_completion.d
/usr/local/share/doc
/usr/local/share/man
/usr/local/share/man/man1
/usr/local/share/zsh
/usr/local/share/zsh/site-functions

You should change the ownership of these directories to your user.
  sudo chown -R $(whoami) /usr/local/etc/bash_completion.d /usr/local/share/doc /usr/local/share/man /usr/local/share/man/man1 /usr/local/share/zsh /usr/local/share/zsh/site-functions

And make sure that your user has write permission.
  chmod u+w /usr/local/etc/bash_completion.d /usr/local/share/doc /usr/local/share/man /usr/local/share/man/man1 /usr/local/share/zsh /usr/local/share/zsh/site-functions
 ✘ junhoha  ~  !chown
zsh: event not found: chown
 ✘ junhoha  ~  sudo chown -R $(whoami):admin /usr/local/etc
Password:
 junhoha  ~  sudo chown -R $(whoami):admin /usr/local/share
 junhoha  ~  brew install protobuf


==> Downloading https://homebrew.bintray.com/bottles/protobuf-3.11.1.catalina.bo
==> Downloading from https://akamai.bintray.com/34/34e7c02caf05fc97635455eee47e4
######################################################################## 100.0%
==> Pouring protobuf-3.11.1.catalina.bottle.tar.gz
🍺  /usr/local/Cellar/protobuf/3.11.1: 268 files, 19.6MB



AI/models-master/research  python setup.py build

running build
running build_py
creating build
creating build/lib
creating build/lib/object_detection
copying object_detection/exporter_test.py -> build/lib/object_detection
copying object_detection/export_tflite_ssd_graph_lib.py -> build/lib/object_detection
copying object_detection/model_lib.py -> build/lib/object_detection
copying object_detection/model_lib_test.py -> build/lib/object_detection
copying object_detection/exporter.py -> build/lib/object_detection
copying object_detection/model_lib_v2_test.py -> build/lib/object_detection
copying object_detection/__init__.py -> build/lib/object_detection
copying object_detection/eval_util_test.py -> build/lib/object_detection
copying object_detection/export_tflite_ssd_graph_lib_test.py -> build/lib/object_detection
copying object_detection/eval_util.py -> build/lib/object_detection
copying object_detection/inputs.py -> build/lib/object_detection
copying object_detection/export_tflite_ssd_graph.py -> build/lib/object_detection
copying object_detection/model_hparams.py -> build/lib/object_detection
copying object_detection/inputs_test.py -> build/lib/object_detection
copying object_detection/model_main.py -> build/lib/object_detection
copying object_detection/model_tpu_main.py -> build/lib/object_detection
copying object_detection/model_lib_v2.py -> build/lib/object_detection
copying object_detection/export_inference_graph.py -> build/lib/object_detection
creating build/lib/object_detection/metrics
copying object_detection/metrics/coco_tools.py -> build/lib/object_detection/metrics
copying object_detection/metrics/oid_vrd_challenge_evaluation_utils.py -> build/lib/object_detection/metrics
copying object_detection/metrics/oid_vrd_challenge_evaluation.py -> build/lib/object_detection/metrics
copying object_detection/metrics/calibration_metrics_test.py -> build/lib/object_detection/metrics
copying object_detection/metrics/calibration_evaluation_test.py -> build/lib/object_detection/metrics
copying object_detection/metrics/tf_example_parser_test.py -> build/lib/object_detection/metrics
copying object_detection/metrics/offline_eval_map_corloc_test.py -> build/lib/object_detection/metrics
copying object_detection/metrics/calibration_evaluation.py -> build/lib/object_detection/metrics
copying object_detection/metrics/tf_example_parser.py -> build/lib/object_detection/metrics
copying object_detection/metrics/__init__.py -> build/lib/object_detection/metrics
copying object_detection/metrics/oid_challenge_evaluation_utils_test.py -> build/lib/object_detection/metrics
copying object_detection/metrics/coco_evaluation.py -> build/lib/object_detection/metrics
copying object_detection/metrics/oid_vrd_challenge_evaluation_utils_test.py -> build/lib/object_detection/metrics
copying object_detection/metrics/coco_tools_test.py -> build/lib/object_detection/metrics
copying object_detection/metrics/offline_eval_map_corloc.py -> build/lib/object_detection/metrics
copying object_detection/metrics/io_utils.py -> build/lib/object_detection/metrics
copying object_detection/metrics/oid_challenge_evaluation_utils.py -> build/lib/object_detection/metrics
copying object_detection/metrics/coco_evaluation_test.py -> build/lib/object_detection/metrics
copying object_detection/metrics/calibration_metrics.py -> build/lib/object_detection/metrics
copying object_detection/metrics/oid_challenge_evaluation.py -> build/lib/object_detection/metrics
creating build/lib/object_detection/meta_architectures
copying object_detection/meta_architectures/faster_rcnn_meta_arch.py -> build/lib/object_detection/meta_architectures
copying object_detection/meta_architectures/rfcn_meta_arch_test.py -> build/lib/object_detection/meta_architectures
copying object_detection/meta_architectures/ssd_meta_arch_test_lib.py -> build/lib/object_detection/meta_architectures
copying object_detection/meta_architectures/__init__.py -> build/lib/object_detection/meta_architectures
copying object_detection/meta_architectures/faster_rcnn_meta_arch_test_lib.py -> build/lib/object_detection/meta_architectures
copying object_detection/meta_architectures/ssd_meta_arch_test.py -> build/lib/object_detection/meta_architectures
copying object_detection/meta_architectures/faster_rcnn_meta_arch_test.py -> build/lib/object_detection/meta_architectures
copying object_detection/meta_architectures/rfcn_meta_arch.py -> build/lib/object_detection/meta_architectures
copying object_detection/meta_architectures/ssd_meta_arch.py -> build/lib/object_detection/meta_architectures
creating build/lib/object_detection/tpu_exporters
copying object_detection/tpu_exporters/export_saved_model_tpu_lib_test.py -> build/lib/object_detection/tpu_exporters
copying object_detection/tpu_exporters/utils_test.py -> build/lib/object_detection/tpu_exporters
copying object_detection/tpu_exporters/ssd.py -> build/lib/object_detection/tpu_exporters
copying object_detection/tpu_exporters/faster_rcnn.py -> build/lib/object_detection/tpu_exporters
copying object_detection/tpu_exporters/__init__.py -> build/lib/object_detection/tpu_exporters
copying object_detection/tpu_exporters/export_saved_model_tpu.py -> build/lib/object_detection/tpu_exporters
copying object_detection/tpu_exporters/utils.py -> build/lib/object_detection/tpu_exporters
copying object_detection/tpu_exporters/export_saved_model_tpu_lib.py -> build/lib/object_detection/tpu_exporters
creating build/lib/object_detection/protos
copying object_detection/protos/pipeline_pb2.py -> build/lib/object_detection/protos
copying object_detection/protos/string_int_label_map_pb2.py -> build/lib/object_detection/protos
copying object_detection/protos/keypoint_box_coder_pb2.py -> build/lib/object_detection/protos
copying object_detection/protos/train_pb2.py -> build/lib/object_detection/protos
copying object_detection/protos/square_box_coder_pb2.py -> build/lib/object_detection/protos
copying object_detection/protos/argmax_matcher_pb2.py -> build/lib/object_detection/protos
copying object_detection/protos/region_similarity_calculator_pb2.py -> build/lib/object_detection/protos
copying object_detection/protos/box_predictor_pb2.py -> build/lib/object_detection/protos
copying object_detection/protos/faster_rcnn_pb2.py -> build/lib/object_detection/protos
copying object_detection/protos/grid_anchor_generator_pb2.py -> build/lib/object_detection/protos
copying object_detection/protos/matcher_pb2.py -> build/lib/object_detection/protos
copying object_detection/protos/__init__.py -> build/lib/object_detection/protos
copying object_detection/protos/bipartite_matcher_pb2.py -> build/lib/object_detection/protos
copying object_detection/protos/image_resizer_pb2.py -> build/lib/object_detection/protos
copying object_detection/protos/calibration_pb2.py -> build/lib/object_detection/protos
copying object_detection/protos/target_assigner_pb2.py -> build/lib/object_detection/protos
copying object_detection/protos/ssd_anchor_generator_pb2.py -> build/lib/object_detection/protos
copying object_detection/protos/preprocessor_pb2.py -> build/lib/object_detection/protos
copying object_detection/protos/eval_pb2.py -> build/lib/object_detection/protos
copying object_detection/protos/graph_rewriter_pb2.py -> build/lib/object_detection/protos
copying object_detection/protos/flexible_grid_anchor_generator_pb2.py -> build/lib/object_detection/protos
copying object_detection/protos/faster_rcnn_box_coder_pb2.py -> build/lib/object_detection/protos
copying object_detection/protos/mean_stddev_box_coder_pb2.py -> build/lib/object_detection/protos
copying object_detection/protos/anchor_generator_pb2.py -> build/lib/object_detection/protos
copying object_detection/protos/box_coder_pb2.py -> build/lib/object_detection/protos
copying object_detection/protos/model_pb2.py -> build/lib/object_detection/protos
copying object_detection/protos/optimizer_pb2.py -> build/lib/object_detection/protos
copying object_detection/protos/hyperparams_pb2.py -> build/lib/object_detection/protos
copying object_detection/protos/losses_pb2.py -> build/lib/object_detection/protos
copying object_detection/protos/input_reader_pb2.py -> build/lib/object_detection/protos
copying object_detection/protos/multiscale_anchor_generator_pb2.py -> build/lib/object_detection/protos
copying object_detection/protos/post_processing_pb2.py -> build/lib/object_detection/protos
copying object_detection/protos/ssd_pb2.py -> build/lib/object_detection/protos
creating build/lib/object_detection/core
copying object_detection/core/target_assigner.py -> build/lib/object_detection/core
copying object_detection/core/prefetcher_test.py -> build/lib/object_detection/core
copying object_detection/core/data_decoder.py -> build/lib/object_detection/core
copying object_detection/core/matcher.py -> build/lib/object_detection/core
copying object_detection/core/freezable_batch_norm_test.py -> build/lib/object_detection/core
copying object_detection/core/box_list_ops_test.py -> build/lib/object_detection/core
copying object_detection/core/balanced_positive_negative_sampler_test.py -> build/lib/object_detection/core
copying object_detection/core/preprocessor_cache.py -> build/lib/object_detection/core
copying object_detection/core/batch_multiclass_nms_test.py -> build/lib/object_detection/core
copying object_detection/core/box_coder.py -> build/lib/object_detection/core
copying object_detection/core/batcher_test.py -> build/lib/object_detection/core
copying object_detection/core/__init__.py -> build/lib/object_detection/core
copying object_detection/core/standard_fields.py -> build/lib/object_detection/core
copying object_detection/core/box_list_test.py -> build/lib/object_detection/core
copying object_detection/core/minibatch_sampler.py -> build/lib/object_detection/core
copying object_detection/core/preprocessor.py -> build/lib/object_detection/core
copying object_detection/core/data_parser.py -> build/lib/object_detection/core
copying object_detection/core/prefetcher.py -> build/lib/object_detection/core
copying object_detection/core/box_list_ops.py -> build/lib/object_detection/core
copying object_detection/core/model.py -> build/lib/object_detection/core
copying object_detection/core/anchor_generator.py -> build/lib/object_detection/core
copying object_detection/core/minibatch_sampler_test.py -> build/lib/object_detection/core
copying object_detection/core/preprocessor_test.py -> build/lib/object_detection/core
copying object_detection/core/keypoint_ops_test.py -> build/lib/object_detection/core
copying object_detection/core/box_predictor.py -> build/lib/object_detection/core
copying object_detection/core/balanced_positive_negative_sampler.py -> build/lib/object_detection/core
copying object_detection/core/freezable_batch_norm.py -> build/lib/object_detection/core
copying object_detection/core/target_assigner_test.py -> build/lib/object_detection/core
copying object_detection/core/box_list.py -> build/lib/object_detection/core
copying object_detection/core/post_processing.py -> build/lib/object_detection/core
copying object_detection/core/losses.py -> build/lib/object_detection/core
copying object_detection/core/region_similarity_calculator.py -> build/lib/object_detection/core
copying object_detection/core/box_coder_test.py -> build/lib/object_detection/core
copying object_detection/core/class_agnostic_nms_test.py -> build/lib/object_detection/core
copying object_detection/core/losses_test.py -> build/lib/object_detection/core
copying object_detection/core/keypoint_ops.py -> build/lib/object_detection/core
copying object_detection/core/region_similarity_calculator_test.py -> build/lib/object_detection/core
copying object_detection/core/batcher.py -> build/lib/object_detection/core
copying object_detection/core/multiclass_nms_test.py -> build/lib/object_detection/core
copying object_detection/core/matcher_test.py -> build/lib/object_detection/core
creating build/lib/object_detection/builders
copying object_detection/builders/optimizer_builder.py -> build/lib/object_detection/builders
copying object_detection/builders/graph_rewriter_builder_test.py -> build/lib/object_detection/builders
copying object_detection/builders/input_reader_builder.py -> build/lib/object_detection/builders
copying object_detection/builders/optimizer_builder_test.py -> build/lib/object_detection/builders
copying object_detection/builders/graph_rewriter_builder.py -> build/lib/object_detection/builders
copying object_detection/builders/model_builder.py -> build/lib/object_detection/builders
copying object_detection/builders/box_predictor_builder_test.py -> build/lib/object_detection/builders
copying object_detection/builders/matcher_builder.py -> build/lib/object_detection/builders
copying object_detection/builders/model_builder_test.py -> build/lib/object_detection/builders
copying object_detection/builders/box_coder_builder_test.py -> build/lib/object_detection/builders
copying object_detection/builders/preprocessor_builder.py -> build/lib/object_detection/builders
copying object_detection/builders/post_processing_builder.py -> build/lib/object_detection/builders
copying object_detection/builders/dataset_builder_test.py -> build/lib/object_detection/builders
copying object_detection/builders/matcher_builder_test.py -> build/lib/object_detection/builders
copying object_detection/builders/preprocessor_builder_test.py -> build/lib/object_detection/builders
copying object_detection/builders/region_similarity_calculator_builder_test.py -> build/lib/object_detection/builders
copying object_detection/builders/post_processing_builder_test.py -> build/lib/object_detection/builders
copying object_detection/builders/calibration_builder.py -> build/lib/object_detection/builders
copying object_detection/builders/__init__.py -> build/lib/object_detection/builders
copying object_detection/builders/hyperparams_builder.py -> build/lib/object_detection/builders
copying object_detection/builders/input_reader_builder_test.py -> build/lib/object_detection/builders
copying object_detection/builders/dataset_builder.py -> build/lib/object_detection/builders
copying object_detection/builders/image_resizer_builder_test.py -> build/lib/object_detection/builders
copying object_detection/builders/anchor_generator_builder_test.py -> build/lib/object_detection/builders
copying object_detection/builders/anchor_generator_builder.py -> build/lib/object_detection/builders
copying object_detection/builders/box_predictor_builder.py -> build/lib/object_detection/builders
copying object_detection/builders/region_similarity_calculator_builder.py -> build/lib/object_detection/builders
copying object_detection/builders/image_resizer_builder.py -> build/lib/object_detection/builders
copying object_detection/builders/target_assigner_builder_test.py -> build/lib/object_detection/builders
copying object_detection/builders/hyperparams_builder_test.py -> build/lib/object_detection/builders
copying object_detection/builders/losses_builder_test.py -> build/lib/object_detection/builders
copying object_detection/builders/losses_builder.py -> build/lib/object_detection/builders
copying object_detection/builders/calibration_builder_test.py -> build/lib/object_detection/builders
copying object_detection/builders/box_coder_builder.py -> build/lib/object_detection/builders
copying object_detection/builders/target_assigner_builder.py -> build/lib/object_detection/builders
creating build/lib/object_detection/legacy
copying object_detection/legacy/trainer_test.py -> build/lib/object_detection/legacy
copying object_detection/legacy/__init__.py -> build/lib/object_detection/legacy
copying object_detection/legacy/train.py -> build/lib/object_detection/legacy
copying object_detection/legacy/trainer.py -> build/lib/object_detection/legacy
copying object_detection/legacy/eval.py -> build/lib/object_detection/legacy
copying object_detection/legacy/evaluator.py -> build/lib/object_detection/legacy
creating build/lib/object_detection/predictors
copying object_detection/predictors/convolutional_box_predictor_test.py -> build/lib/object_detection/predictors
copying object_detection/predictors/mask_rcnn_box_predictor.py -> build/lib/object_detection/predictors
copying object_detection/predictors/rfcn_box_predictor.py -> build/lib/object_detection/predictors
copying object_detection/predictors/convolutional_keras_box_predictor_test.py -> build/lib/object_detection/predictors
copying object_detection/predictors/__init__.py -> build/lib/object_detection/predictors
copying object_detection/predictors/mask_rcnn_keras_box_predictor.py -> build/lib/object_detection/predictors
copying object_detection/predictors/rfcn_keras_box_predictor_test.py -> build/lib/object_detection/predictors
copying object_detection/predictors/rfcn_keras_box_predictor.py -> build/lib/object_detection/predictors
copying object_detection/predictors/convolutional_keras_box_predictor.py -> build/lib/object_detection/predictors
copying object_detection/predictors/rfcn_box_predictor_test.py -> build/lib/object_detection/predictors
copying object_detection/predictors/mask_rcnn_keras_box_predictor_test.py -> build/lib/object_detection/predictors
copying object_detection/predictors/mask_rcnn_box_predictor_test.py -> build/lib/object_detection/predictors
copying object_detection/predictors/convolutional_box_predictor.py -> build/lib/object_detection/predictors
creating build/lib/object_detection/utils
copying object_detection/utils/visualization_utils.py -> build/lib/object_detection/utils
copying object_detection/utils/autoaugment_utils.py -> build/lib/object_detection/utils
copying object_detection/utils/label_map_util_test.py -> build/lib/object_detection/utils
copying object_detection/utils/metrics.py -> build/lib/object_detection/utils
copying object_detection/utils/np_mask_ops_test.py -> build/lib/object_detection/utils
copying object_detection/utils/test_utils.py -> build/lib/object_detection/utils
copying object_detection/utils/np_box_list_test.py -> build/lib/object_detection/utils
copying object_detection/utils/learning_schedules.py -> build/lib/object_detection/utils
copying object_detection/utils/context_manager.py -> build/lib/object_detection/utils
copying object_detection/utils/np_box_list_ops.py -> build/lib/object_detection/utils
copying object_detection/utils/spatial_transform_ops.py -> build/lib/object_detection/utils
copying object_detection/utils/learning_schedules_test.py -> build/lib/object_detection/utils
copying object_detection/utils/np_box_mask_list_test.py -> build/lib/object_detection/utils
copying object_detection/utils/per_image_evaluation_test.py -> build/lib/object_detection/utils
copying object_detection/utils/model_util.py -> build/lib/object_detection/utils
copying object_detection/utils/variables_helper.py -> build/lib/object_detection/utils
copying object_detection/utils/category_util_test.py -> build/lib/object_detection/utils
copying object_detection/utils/np_box_list_ops_test.py -> build/lib/object_detection/utils
copying object_detection/utils/np_box_ops_test.py -> build/lib/object_detection/utils
copying object_detection/utils/config_util_test.py -> build/lib/object_detection/utils
copying object_detection/utils/np_box_list.py -> build/lib/object_detection/utils
copying object_detection/utils/patch_ops_test.py -> build/lib/object_detection/utils
copying object_detection/utils/object_detection_evaluation_test.py -> build/lib/object_detection/utils
copying object_detection/utils/dataset_util_test.py -> build/lib/object_detection/utils
copying object_detection/utils/shape_utils.py -> build/lib/object_detection/utils
copying object_detection/utils/variables_helper_test.py -> build/lib/object_detection/utils
copying object_detection/utils/np_box_mask_list.py -> build/lib/object_detection/utils
copying object_detection/utils/static_shape_test.py -> build/lib/object_detection/utils
copying object_detection/utils/__init__.py -> build/lib/object_detection/utils
copying object_detection/utils/metrics_test.py -> build/lib/object_detection/utils
copying object_detection/utils/json_utils_test.py -> build/lib/object_detection/utils
copying object_detection/utils/per_image_evaluation.py -> build/lib/object_detection/utils
copying object_detection/utils/np_mask_ops.py -> build/lib/object_detection/utils
copying object_detection/utils/np_box_ops.py -> build/lib/object_detection/utils
copying object_detection/utils/test_case.py -> build/lib/object_detection/utils
copying object_detection/utils/ops.py -> build/lib/object_detection/utils
copying object_detection/utils/patch_ops.py -> build/lib/object_detection/utils
copying object_detection/utils/label_map_util.py -> build/lib/object_detection/utils
copying object_detection/utils/spatial_transform_ops_test.py -> build/lib/object_detection/utils
copying object_detection/utils/np_box_mask_list_ops_test.py -> build/lib/object_detection/utils
copying object_detection/utils/per_image_vrd_evaluation_test.py -> build/lib/object_detection/utils
copying object_detection/utils/np_box_mask_list_ops.py -> build/lib/object_detection/utils
copying object_detection/utils/dataset_util.py -> build/lib/object_detection/utils
copying object_detection/utils/ops_test.py -> build/lib/object_detection/utils
copying object_detection/utils/visualization_utils_test.py -> build/lib/object_detection/utils
copying object_detection/utils/per_image_vrd_evaluation.py -> build/lib/object_detection/utils
copying object_detection/utils/object_detection_evaluation.py -> build/lib/object_detection/utils
copying object_detection/utils/json_utils.py -> build/lib/object_detection/utils
copying object_detection/utils/static_shape.py -> build/lib/object_detection/utils
copying object_detection/utils/context_manager_test.py -> build/lib/object_detection/utils
copying object_detection/utils/config_util.py -> build/lib/object_detection/utils
copying object_detection/utils/category_util.py -> build/lib/object_detection/utils
copying object_detection/utils/model_util_test.py -> build/lib/object_detection/utils
copying object_detection/utils/vrd_evaluation_test.py -> build/lib/object_detection/utils
copying object_detection/utils/vrd_evaluation.py -> build/lib/object_detection/utils
copying object_detection/utils/test_utils_test.py -> build/lib/object_detection/utils
copying object_detection/utils/shape_utils_test.py -> build/lib/object_detection/utils
creating build/lib/object_detection/models
copying object_detection/models/ssd_mobilenet_v1_ppn_feature_extractor.py -> build/lib/object_detection/models
copying object_detection/models/ssd_mobilenet_v2_keras_feature_extractor.py -> build/lib/object_detection/models
copying object_detection/models/faster_rcnn_mobilenet_v1_feature_extractor_test.py -> build/lib/object_detection/models
copying object_detection/models/ssd_pnasnet_feature_extractor_test.py -> build/lib/object_detection/models
copying object_detection/models/ssd_mobilenet_v2_fpn_feature_extractor_test.py -> build/lib/object_detection/models
copying object_detection/models/ssd_mobilenet_v3_feature_extractor_test.py -> build/lib/object_detection/models
copying object_detection/models/faster_rcnn_pnas_feature_extractor_test.py -> build/lib/object_detection/models
copying object_detection/models/ssd_inception_v3_feature_extractor.py -> build/lib/object_detection/models
copying object_detection/models/faster_rcnn_resnet_v1_feature_extractor.py -> build/lib/object_detection/models
copying object_detection/models/ssd_mobilenet_v1_fpn_keras_feature_extractor.py -> build/lib/object_detection/models
copying object_detection/models/ssd_mobilenet_v3_feature_extractor_testbase.py -> build/lib/object_detection/models
copying object_detection/models/faster_rcnn_inception_resnet_v2_keras_feature_extractor.py -> build/lib/object_detection/models
copying object_detection/models/ssd_inception_v3_feature_extractor_test.py -> build/lib/object_detection/models
copying object_detection/models/embedded_ssd_mobilenet_v1_feature_extractor.py -> build/lib/object_detection/models
copying object_detection/models/ssd_mobilenet_v2_fpn_feature_extractor.py -> build/lib/object_detection/models
copying object_detection/models/ssd_mobilenet_v1_feature_extractor.py -> build/lib/object_detection/models
copying object_detection/models/ssd_mobilenet_v1_feature_extractor_test.py -> build/lib/object_detection/models
copying object_detection/models/ssd_pnasnet_feature_extractor.py -> build/lib/object_detection/models
copying object_detection/models/feature_map_generators_test.py -> build/lib/object_detection/models
copying object_detection/models/ssd_inception_v2_feature_extractor.py -> build/lib/object_detection/models
copying object_detection/models/ssd_resnet_v1_fpn_feature_extractor.py -> build/lib/object_detection/models
copying object_detection/models/faster_rcnn_inception_resnet_v2_feature_extractor_test.py -> build/lib/object_detection/models
copying object_detection/models/ssd_mobilenet_edgetpu_feature_extractor.py -> build/lib/object_detection/models
copying object_detection/models/faster_rcnn_pnas_feature_extractor.py -> build/lib/object_detection/models
copying object_detection/models/faster_rcnn_inception_v2_feature_extractor.py -> build/lib/object_detection/models
copying object_detection/models/__init__.py -> build/lib/object_detection/models
copying object_detection/models/faster_rcnn_mobilenet_v1_feature_extractor.py -> build/lib/object_detection/models
copying object_detection/models/faster_rcnn_inception_resnet_v2_feature_extractor.py -> build/lib/object_detection/models
copying object_detection/models/faster_rcnn_inception_v2_feature_extractor_test.py -> build/lib/object_detection/models
copying object_detection/models/faster_rcnn_inception_resnet_v2_keras_feature_extractor_test.py -> build/lib/object_detection/models
copying object_detection/models/embedded_ssd_mobilenet_v1_feature_extractor_test.py -> build/lib/object_detection/models
copying object_detection/models/ssd_resnet_v1_fpn_feature_extractor_testbase.py -> build/lib/object_detection/models
copying object_detection/models/faster_rcnn_nas_feature_extractor.py -> build/lib/object_detection/models
copying object_detection/models/ssd_mobilenet_edgetpu_feature_extractor_testbase.py -> build/lib/object_detection/models
copying object_detection/models/ssd_mobilenet_v1_ppn_feature_extractor_test.py -> build/lib/object_detection/models
copying object_detection/models/ssd_resnet_v1_ppn_feature_extractor.py -> build/lib/object_detection/models
copying object_detection/models/ssd_resnet_v1_ppn_feature_extractor_testbase.py -> build/lib/object_detection/models
copying object_detection/models/ssd_mobilenet_v1_keras_feature_extractor.py -> build/lib/object_detection/models
copying object_detection/models/ssd_resnet_v1_ppn_feature_extractor_test.py -> build/lib/object_detection/models
copying object_detection/models/ssd_mobilenet_v2_feature_extractor.py -> build/lib/object_detection/models
copying object_detection/models/ssd_resnet_v1_fpn_keras_feature_extractor.py -> build/lib/object_detection/models
copying object_detection/models/ssd_inception_v2_feature_extractor_test.py -> build/lib/object_detection/models
copying object_detection/models/ssd_mobilenet_edgetpu_feature_extractor_test.py -> build/lib/object_detection/models
copying object_detection/models/feature_map_generators.py -> build/lib/object_detection/models
copying object_detection/models/ssd_feature_extractor_test.py -> build/lib/object_detection/models
copying object_detection/models/ssd_mobilenet_v1_fpn_feature_extractor_test.py -> build/lib/object_detection/models
copying object_detection/models/ssd_mobilenet_v3_feature_extractor.py -> build/lib/object_detection/models
copying object_detection/models/ssd_mobilenet_v2_feature_extractor_test.py -> build/lib/object_detection/models
copying object_detection/models/faster_rcnn_resnet_v1_feature_extractor_test.py -> build/lib/object_detection/models
copying object_detection/models/ssd_mobilenet_v1_fpn_feature_extractor.py -> build/lib/object_detection/models
copying object_detection/models/faster_rcnn_nas_feature_extractor_test.py -> build/lib/object_detection/models
copying object_detection/models/ssd_resnet_v1_fpn_feature_extractor_test.py -> build/lib/object_detection/models
copying object_detection/models/ssd_mobilenet_v2_fpn_keras_feature_extractor.py -> build/lib/object_detection/models
creating build/lib/object_detection/anchor_generators
copying object_detection/anchor_generators/flexible_grid_anchor_generator_test.py -> build/lib/object_detection/anchor_generators
copying object_detection/anchor_generators/multiscale_grid_anchor_generator_test.py -> build/lib/object_detection/anchor_generators
copying object_detection/anchor_generators/grid_anchor_generator_test.py -> build/lib/object_detection/anchor_generators
copying object_detection/anchor_generators/multiscale_grid_anchor_generator.py -> build/lib/object_detection/anchor_generators
copying object_detection/anchor_generators/__init__.py -> build/lib/object_detection/anchor_generators
copying object_detection/anchor_generators/flexible_grid_anchor_generator.py -> build/lib/object_detection/anchor_generators
copying object_detection/anchor_generators/multiple_grid_anchor_generator_test.py -> build/lib/object_detection/anchor_generators
copying object_detection/anchor_generators/multiple_grid_anchor_generator.py -> build/lib/object_detection/anchor_generators
copying object_detection/anchor_generators/grid_anchor_generator.py -> build/lib/object_detection/anchor_generators
creating build/lib/object_detection/dataset_tools
copying object_detection/dataset_tools/oid_hierarchical_labels_expansion_test.py -> build/lib/object_detection/dataset_tools
copying object_detection/dataset_tools/create_pascal_tf_record.py -> build/lib/object_detection/dataset_tools
copying object_detection/dataset_tools/oid_tfrecord_creation.py -> build/lib/object_detection/dataset_tools
copying object_detection/dataset_tools/create_kitti_tf_record.py -> build/lib/object_detection/dataset_tools
copying object_detection/dataset_tools/oid_hierarchical_labels_expansion.py -> build/lib/object_detection/dataset_tools
copying object_detection/dataset_tools/tf_record_creation_util.py -> build/lib/object_detection/dataset_tools
copying object_detection/dataset_tools/create_pascal_tf_record_test.py -> build/lib/object_detection/dataset_tools
copying object_detection/dataset_tools/create_oid_tf_record.py -> build/lib/object_detection/dataset_tools
copying object_detection/dataset_tools/__init__.py -> build/lib/object_detection/dataset_tools
copying object_detection/dataset_tools/create_coco_tf_record_test.py -> build/lib/object_detection/dataset_tools
copying object_detection/dataset_tools/tf_record_creation_util_test.py -> build/lib/object_detection/dataset_tools
copying object_detection/dataset_tools/oid_tfrecord_creation_test.py -> build/lib/object_detection/dataset_tools
copying object_detection/dataset_tools/create_pet_tf_record.py -> build/lib/object_detection/dataset_tools
copying object_detection/dataset_tools/create_coco_tf_record.py -> build/lib/object_detection/dataset_tools
copying object_detection/dataset_tools/create_kitti_tf_record_test.py -> build/lib/object_detection/dataset_tools
creating build/lib/object_detection/inference
copying object_detection/inference/detection_inference_test.py -> build/lib/object_detection/inference
copying object_detection/inference/detection_inference.py -> build/lib/object_detection/inference
copying object_detection/inference/__init__.py -> build/lib/object_detection/inference
copying object_detection/inference/infer_detections.py -> build/lib/object_detection/inference
creating build/lib/object_detection/data_decoders
copying object_detection/data_decoders/__init__.py -> build/lib/object_detection/data_decoders
copying object_detection/data_decoders/tf_example_decoder_test.py -> build/lib/object_detection/data_decoders
copying object_detection/data_decoders/tf_example_decoder.py -> build/lib/object_detection/data_decoders
creating build/lib/object_detection/matchers
copying object_detection/matchers/bipartite_matcher_test.py -> build/lib/object_detection/matchers
copying object_detection/matchers/__init__.py -> build/lib/object_detection/matchers
copying object_detection/matchers/argmax_matcher_test.py -> build/lib/object_detection/matchers
copying object_detection/matchers/bipartite_matcher.py -> build/lib/object_detection/matchers
copying object_detection/matchers/argmax_matcher.py -> build/lib/object_detection/matchers
creating build/lib/object_detection/box_coders
copying object_detection/box_coders/faster_rcnn_box_coder.py -> build/lib/object_detection/box_coders
copying object_detection/box_coders/keypoint_box_coder_test.py -> build/lib/object_detection/box_coders
copying object_detection/box_coders/square_box_coder.py -> build/lib/object_detection/box_coders
copying object_detection/box_coders/__init__.py -> build/lib/object_detection/box_coders
copying object_detection/box_coders/square_box_coder_test.py -> build/lib/object_detection/box_coders
copying object_detection/box_coders/keypoint_box_coder.py -> build/lib/object_detection/box_coders
copying object_detection/box_coders/faster_rcnn_box_coder_test.py -> build/lib/object_detection/box_coders
copying object_detection/box_coders/mean_stddev_box_coder.py -> build/lib/object_detection/box_coders
copying object_detection/box_coders/mean_stddev_box_coder_test.py -> build/lib/object_detection/box_coders
creating build/lib/object_detection/tpu_exporters/testdata
copying object_detection/tpu_exporters/testdata/__init__.py -> build/lib/object_detection/tpu_exporters/testdata
creating build/lib/object_detection/predictors/heads
copying object_detection/predictors/heads/keras_class_head.py -> build/lib/object_detection/predictors/heads
copying object_detection/predictors/heads/keras_box_head_test.py -> build/lib/object_detection/predictors/heads
copying object_detection/predictors/heads/mask_head.py -> build/lib/object_detection/predictors/heads
copying object_detection/predictors/heads/box_head_test.py -> build/lib/object_detection/predictors/heads
copying object_detection/predictors/heads/box_head.py -> build/lib/object_detection/predictors/heads
copying object_detection/predictors/heads/keras_mask_head.py -> build/lib/object_detection/predictors/heads
copying object_detection/predictors/heads/keypoint_head.py -> build/lib/object_detection/predictors/heads
copying object_detection/predictors/heads/keras_box_head.py -> build/lib/object_detection/predictors/heads
copying object_detection/predictors/heads/__init__.py -> build/lib/object_detection/predictors/heads
copying object_detection/predictors/heads/keypoint_head_test.py -> build/lib/object_detection/predictors/heads
copying object_detection/predictors/heads/keras_class_head_test.py -> build/lib/object_detection/predictors/heads
copying object_detection/predictors/heads/head.py -> build/lib/object_detection/predictors/heads
copying object_detection/predictors/heads/class_head_test.py -> build/lib/object_detection/predictors/heads
copying object_detection/predictors/heads/keras_mask_head_test.py -> build/lib/object_detection/predictors/heads
copying object_detection/predictors/heads/mask_head_test.py -> build/lib/object_detection/predictors/heads
copying object_detection/predictors/heads/class_head.py -> build/lib/object_detection/predictors/heads
creating build/lib/object_detection/models/keras_models
copying object_detection/models/keras_models/model_utils.py -> build/lib/object_detection/models/keras_models
copying object_detection/models/keras_models/test_utils.py -> build/lib/object_detection/models/keras_models
copying object_detection/models/keras_models/resnet_v1.py -> build/lib/object_detection/models/keras_models
copying object_detection/models/keras_models/inception_resnet_v2.py -> build/lib/object_detection/models/keras_models
copying object_detection/models/keras_models/inception_resnet_v2_test.py -> build/lib/object_detection/models/keras_models
copying object_detection/models/keras_models/resnet_v1_test.py -> build/lib/object_detection/models/keras_models
copying object_detection/models/keras_models/mobilenet_v2.py -> build/lib/object_detection/models/keras_models
copying object_detection/models/keras_models/__init__.py -> build/lib/object_detection/models/keras_models
copying object_detection/models/keras_models/mobilenet_v1_test.py -> build/lib/object_detection/models/keras_models
copying object_detection/models/keras_models/mobilenet_v1.py -> build/lib/object_detection/models/keras_models
copying object_detection/models/keras_models/mobilenet_v2_test.py -> build/lib/object_detection/models/keras_models
running egg_info
creating object_detection.egg-info
writing requirements to object_detection.egg-info/requires.txt
writing object_detection.egg-info/PKG-INFO
writing top-level names to object_detection.egg-info/top_level.txt
writing dependency_links to object_detection.egg-info/dependency_links.txt
writing manifest file 'object_detection.egg-info/SOURCES.txt'
reading manifest file 'object_detection.egg-info/SOURCES.txt'
writing manifest file 'object_detection.egg-info/SOURCES.txt'
 junhoha  ~/Desktop/AI/models-master/research  python setup.py install
running install
error: can't create or remove files in install directory

The following error occurred while trying to add or remove files in the
installation directory:

    [Errno 13] Permission denied: '/Library/Python/2.7/site-packages/test-easy-install-34984.write-test'

'Blog History' 카테고리의 다른 글

개 발 일 지 059  (0) 2019.12.13
개 발 일 지 058  (0) 2019.12.13
개 발 일 지 056  (0) 2019.12.12
개 발 일 지 055  (0) 2019.12.11
개 발 일 지 054  (0) 2019.12.10

https://ko.wikipedia.org/wiki/%ED%9E%88%ED%94%BC


히피(영어: hippie 또는 hippy)는 1960년대 미국 샌프란시스코, LA 등지 청년층에서부터 시작된, 기성의 사회 통념, 제도, 가치관을 부정하고 인간성의 회복, 자연으로의 귀의 등을 주장하며 탈사회적으로 행동하는 사람들을 가리키는 말이다. 어원으로는 happy(행복한), hipped한, 화가 단단히 난), hip(재즈용어로 가락을 맞추다), hip(허벅지), "hip,hip"(갈채를 보낼 때의 소리) 등에서 나왔다는 설이 있다.


초기 히피문화는 틀에 박힌 가치가 아니라 자기 자신의 가치와 의미에 따라 개성의 표현을 추구하고, 기성사회의 성적 억압과 관습적 도덕을 해체함으로써 개방적인 성의 표현을 통해 친밀성과 이를 통한 새로운 공동체의 건설을 성취하려고 했다. 흔히 일어나는 반전운동이나 민권운동과는 달리 히피문화는 기존질서 체제를 정면으로 거부하기보다는 기성사회의 새로운 가치질서를 만들고자 하였다. 

히피문화의 상징은 꽃으로 되어있는데, 이는 폭력과 억압에 저항하고, 부드럽고 비폭력적인 자연에 대한 사랑으로 모든 것은 대치한다는 의미가 내포되어 있다. 특히 샌프란시스코의 꽃은 '꽃의 아이들(flower children)'로 불리는 히피(hippie)에서 비롯한다. 

!-- "This app is not allowed to query for scheme url " -> plist problem


!-- When virtual keyboard show/hide, Screen is up and down

    CGFloat temp;

- (void)viewDidLoad
{
    self->temp = self.view.frame.origin.y;


#pragma mark -
#pragma mark TextField Delegate
-(BOOL)textFieldShouldReturn:(UITextField *)textField {
    [textField resignFirstResponder];
    return NO;
}


#pragma mark -
#pragma mark TextField Delegate
-(BOOL)textFieldShouldReturn:(UITextField *)textField {
    [textField resignFirstResponder];
    return NO;
}

-(BOOL)textFieldShouldBeginEditing:(UITextField *)textField {
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardDidShow:) name:UIKeyboardDidShowNotification object:nil];
    return YES;
}

- (BOOL)textFieldShouldEndEditing:(UITextField *)textField {
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardDidHide:) name:UIKeyboardDidHideNotification object:nil];

    [self.view endEditing:YES];
    return YES;
}

- (void)keyboardDidShow:(NSNotification *)notification
{
    [UIView beginAnimations:nil context:NULL];
    [UIView setAnimationDelegate:self];
    [UIView setAnimationDuration:0.1];
    [UIView setAnimationBeginsFromCurrentState:YES];
    
    self.view.frame = CGRectMake(self.view.frame.origin.x, (self->temp  - 220), self.view.frame.size.width, self.view.frame.size.height);
    [UIView commitAnimations];
    
}

-(void)keyboardDidHide:(NSNotification *)notification
{
        [UIView beginAnimations:nil context:NULL];
        [UIView setAnimationDelegate:self];
        [UIView setAnimationDuration:0.1];
        [UIView setAnimationBeginsFromCurrentState:YES];
        
        self.view.frame = CGRectMake(self.view.frame.origin.x, (self->temp), self.view.frame.size.width, self.view.frame.size.height);
        [UIView commitAnimations];
    
}



!-- bonus

- (BOOL) isKeyboardOnScreen
{
    BOOL isKeyboardShown = NO;

    NSArray *windows = [UIApplication sharedApplication].windows;
    if (windows.count > 1) {
        NSArray *wSubviews =  [windows[1]  subviews];
        if (wSubviews.count) {
            CGRect keyboardFrame = [wSubviews[0] frame];
            CGRect screenFrame = [windows[1] frame];
            if (keyboardFrame.origin.y+keyboardFrame.size.height == screenFrame.size.height) {
                isKeyboardShown = YES;
            }
        }
    }

    return isKeyboardShown;
}



!- swift 소스로...
Always Embed Swift Standard Libraries
https://objectivec2swift.com/#/xcode-extension/api-key?ref=xcode-extension
이용해서 objective-C 코드가 어떻게 swift로 바뀌는지 형태를 좀 익혀두면 좋음.
(이미 알고 있겠지만 사실, 변환 연습을 며칠해 보니 코드 리딩하면서 바로 스위프트
코드가 떠오름. 물론, 결론은 변환은 무슨... 다 새로 짜는게 나음)

Here are the iPhones that will receive iOS 13:
iPhone 11, iPhone 11 Pro, and iPhone 11 Pro Max.
iPhone XS and iPhone XS Max.
iPhone XR.
iPhone X.
iPhone 8 and 8 Plus.
iPhone 7 and 7 Plus.
iPhone 6S and 6S Plus.
iPhone SE.
2019. 9. 24.

      queryDelete = [NSString stringWithFormat:@"delete from tableB;"];
        delete_stmt = [queryDelete UTF8String];
        sqlite3_prepare_v2(database, delete_stmt, -1, &statement, NULL);
        sqlite3_step(statement);
        sqlite3_reset(statement);




'Blog History' 카테고리의 다른 글

개 발 일 지 058  (0) 2019.12.13
개 발 일 지 057  (0) 2019.12.13
개 발 일 지 055  (0) 2019.12.11
개 발 일 지 054  (0) 2019.12.10
개 발 일 지 053  (0) 2019.12.10



번호 후보기술 및 기술설명 평가 (점수)
낮음 <<     >> 높음
1 (후보기술) 프라임 에디팅(Prime editing) 기술적
혁신성 ① ② ③ ④ ⑤


(기술설명) 살아있는 세포 내에서 유전자서열을 목표에 따라 고효율로 첨가,
삭제, 치환하는 기술 산업적
혁신성 ① ② ③ ④ ⑤


2 (후보기술) 고분해능 생체분자 구조분석기술(High-resolution cryo-EM
/cryo-ET bio-imaging) 필수 항목입니다. 기술적
혁신성 ① ② ③ ④ ⑤


(기술설명) 거대 단백질 복합체, 막단백질, 세포의 입체구조를
초저온-전자현미경을 통해 분석하는 기술 필수 항목입니다. 산업적
혁신성 ① ② ③ ④ ⑤


3 (후보기술) 키메라 바이오인공장기(Artificial bio-organs by chimerism)
필수 항목입니다. 기술적
혁신성 ① ② ③ ④ ⑤


(기술설명) 환자 맞춤형 이식 및 치료를 목적으로 동물에서 사람의 세포,
조직, 장기 등을 키워내는 기술 필수 항목입니다. 산업적
혁신성 ① ② ③ ④ ⑤


4 (후보기술) 단일 신경세포 트래킹(Tracking single neurons)
필수 항목입니다. 기술적
혁신성 ① ② ③ ④ ⑤


(기술설명) 뇌 특정 부위에 전극을 주입 후 각 신경세포의 전기신호를
측정하고 분류하여 신경회로 구성 및 뇌기능 제어기전을
규명하는 기술 필수 항목입니다. 산업적
혁신성 ① ② ③ ④ ⑤


5 (후보기술) 장기관류시스템(Organ perfusion system)
필수 항목입니다. 기술적
혁신성 ① ② ③ ④ ⑤


(기술설명) 체내 환경(혈류, 산소, 온도 등)을 모사하여 체외에서 장기의
세포 괴사나 손상 없이 기능을 유지하는 기술 필수 항목입니다. 산업적
혁신성 ① ② ③ ④ ⑤


6 (후보기술) 단일세포 이미징 추적기술(Single cell biology tracing
visible tech) 필수 항목입니다. 기술적
혁신성 ① ② ③ ④ ⑤


(기술설명) 대량 프로브(probe) 등을 활용한 단일세포 이미징을 통해 세포
위치 정보 및 조직, 장기 발달에 관한 정보를 추적하는 기술
필수 항목입니다. 산업적
혁신성 ① ② ③ ④ ⑤


번호 후보기술 및 기술설명 평가 (점수)
낮음 <<     >> 높음
1 (후보기술) 소포체 기반 약물 전달 기술(Drug delivery with extracellular
 vesicles) 기술적
혁신성 ① ② ③ ④ ⑤


(기술설명) 세포 소기관인 소포체에 약물을 탑재하여 목적 세포까지
정확하게 전달하는 기술 산업적
혁신성 ① ② ③ ④ ⑤


2 (후보기술) 면역세포치료제 활성화 백신 (Boosting vaccine for
CAR-T/NK cells) 기술적
혁신성 ① ② ③ ④ ⑤


(기술설명) CAR-T, NK 등 면역세포의 활성화를 유도하는 물질(백신)을
투입하여 고형암을 치료하는 기술 산업적
혁신성 ① ② ③ ④ ⑤


3 (후보기술) 실시간 액체생검 분석기술(Real-time liquid biopsies)
기술적
혁신성 ① ② ③ ④ ⑤


(기술설명) 혈액, 소변 등에 존재하는 핵산 조각들을 분석하여 실시간 질병의
진행을 추적하는 기술 산업적
혁신성 ① ② ③ ④ ⑤


4 (후보기술) 알츠하이머 치매를 위한 세포치료(Cell therapy for
Alzheimer’s disease) 기술적
혁신성 ① ② ③ ④ ⑤


(기술설명) 대표적인 퇴행성 뇌질환인 알츠하이머성 치매를 치료하기 위한
세포 혹은 줄기세포를 이용한 치료법 산업적
혁신성 ① ② ③ ④ ⑤


5 (후보기술) 전자의약(Digital therapeutics) 기술적
혁신성 ① ② ③ ④ ⑤


(기술설명) 기존의 먹는 알약이나 주사제가 아닌 디지털기술(소프트웨어)을
기반으로 질병예방, 관리 및 치료하는 신개념 의약품
산업적
혁신성 ① ② ③ ④ ⑤


6 (후보기술) 조직 내 노화세포 제거기술(Senolytics) 기술적
혁신성 ① ② ③ ④ ⑤


(기술설명) 조직의 노화 및 기능 이상을 유발하는 노화세포를 선택적으로
제거하여 조직 항상성을 유지하고 질병을 치료하는 기술
산업적
혁신성 ① ② ③ ④ ⑤


번호후보기술 및 기술설명평가 (점수)
낮음 <<     >> 높음1(후보기술) 엽록체 바이오공장(Chloroplast biofactory for high-level
production of biomolecules)기술적
혁신성
① ② ③ ④ ⑤

(기술설명) 식물 세포 소기관인 엽록체를 이용하여 유용 외래 단백질 등을
대량 생산하는 기술산업적
혁신성
① ② ③ ④ ⑤

2(후보기술) 식물 종간 장벽제거기술(Removing interspecific
incompatibility for cross-species hybridization)
기술적
혁신성
① ② ③ ④ ⑤

(기술설명) 이종 교배의 장벽 역할을 하는 단백질 엔지니어링을 통해
이종 교배를 가능하게 하는 기술산업적
혁신성
① ② ③ ④ ⑤

3(후보기술) 친환경 에너지 발전과 농업의 결합(Agrivoltaics for efficient
food and energy production)기술적
혁신성
① ② ③ ④ ⑤

(기술설명) 식물 재배시설에 친환경 에너지 발전 시설을 결합하여 농업
효율과 에너지 생산 효율을 동반 상승시키는 기술
산업적
혁신성
① ② ③ ④ ⑤

4(후보기술) 애완동물 유전체의약(Pet genomics medicine)
기술적
혁신성
① ② ③ ④ ⑤

(기술설명) 애완동물의 유전체 염기서열 분석을 통해 확보된 유전정보를
바탕으로 각 애완동물의 특성에 맞게 치료하는 기술
산업적
혁신성
① ② ③ ④ ⑤

번호 후보기술 및 기술설명 평가 (점수)
낮음 <<     >> 높음
1 (후보기술) 빅데이터 기반 생태건강성 평가 (Ecosystem health
assessment using bio-big data) 기술적
혁신성 ① ② ③ ④ ⑤


(기술설명) 바이오 빅데이터(특히, 미생물 군집구조)를 포함한 환경,
생태 데이터를 통합하여 생태계의 건강성을 평가하는 기술
산업적
혁신성 ① ② ③ ④ ⑤


2 (후보기술) 바이오파운드리(Biofoundry) 기술적
혁신성 ① ② ③ ④ ⑤


(기술설명) Bio+AI+Robot 기반의 융합기술로 생산성과 예측성을
개선함으로써 다양한 바이오 소재를 제조하는 기술
산업적
혁신성 ① ② ③ ④ ⑤


3 (후보기술) 인공생태계(Manipulation of artificial ecosystem)
기술적
혁신성 ① ② ③ ④ ⑤


(기술설명) 최소한의 요소로 실제 생태계를 최대한 모사하는 기술로
다양한 생태계 교란의 영향을 현장처럼 시뮬레이션하는 기술
산업적
혁신성 ① ② ③ ④ ⑤


4 (후보기술) 무세포 합성생물학(Cell-free synthetic biology)
기술적
혁신성 ① ② ③ ④ ⑤


(기술설명) 세포 없이 필요한 요소(단백질, 효소 등)로 단순하게 구성하여
자연적인 생물 시스템을 엔지니어링하는 기술
산업적
혁신성 ① ② ③ ④ ⑤




바이오 분야는 정말 생소한 기술이 많네.

'Blog History' 카테고리의 다른 글

개 발 일 지 057  (0) 2019.12.13
개 발 일 지 056  (0) 2019.12.12
개 발 일 지 054  (0) 2019.12.10
개 발 일 지 053  (0) 2019.12.10
개 발 일 지 052  (0) 2019.12.10

ANALYST, BUSINESS AND GAMEPLAY INSIGHTS - HEARTHSTONE

Global InsightsIrvine, California

 

 

Blizzard Entertainment games don’t just begin with game ideas or end once those games are released. A lot more goes into the creation of a Blizzard product than the work of developers—and we support our games for years after they’re in the hands of gamers worldwide.  Blizzard Entertainment is seeking an Analyst to lead strategic analysis focused on identification, evaluation, and execution of opportunities to drive growth and operational excellence for the Hearthstone franchise.

QUEST DESCRIPTION

  • Slice through petabytes of data to find compelling and actionable product insights
  • Apply vision and confidence to design and direct qualitative and quantitative analysis
  • Stand before stakeholders, including senior leaders, to clearly communicate your strategic findings and recommendations
  • Translate recommendations into efficient action plans for senior management and department leaders
  • Stay abreast of industry trends and innovative developments

REQUIRED TALENT BUILD

  • Arcane Brilliance: Analytical orientation and strong problem-solving skills, demonstrated by the ability to structure an issue and analyze alternative solutions. Tireless advocate for the use of data to solve problems.
  • Break it down!: Superior communications, presentation, and facilitation skills: must have the ability to structure a concise, clear presentation of findings, based on large sets of complex data, and effectively present this to any level in the organization.
  • Power Word: Curiosity: Curious, internally-motivated self-starter with ability to plan, organize, and establish priorities to manage multiple projects and achieve results.
  • Co-op Commander: Collaborate effectively across multiple departments with a proven ability to go deep in the trenches or 80/20 when required to get to insights quickly.
  • Chart the Course: Capable of building highly functional and insightful dashboards.
  • Confident Aim: Strong quantitative skills with a penchant for analytical query writing. Experience working with data using SQL.
  • Stay Awhile and Listen: Excellent interpersonal skills. Effective with storytelling using data and appropriate visualizations.

RECOMMENDED GEAR

  • A minimum of 3+ years’ experience in Gaming, Consulting, Data Analytics, Product Management, or Finance
  • Passionate gamer with working knowledge of Blizzard games, products, and services (particularly Hearthstone)
  • MBA or Masters’ degree in an analytical field a plus
  • Experience with specialized visualization tools (Tableau)

Required Application Materials

  • Resume
  • Cover Letter which should include:
    • Why you are interested in working at Blizzard
    • What games you are currently playing
  • **Only Resumes with Cover Letters will be considered.

Blizzard Entertainment is a global company committed to growing our employees. We offer generous benefits and perks with an eye on providing true work / life balance. We’ve worked hard to champion an intensely collaborative and creative environment, a diverse and inclusive employee culture, and training and opportunity for professional growth. Our people are everything. Our core values are real, and our mission has never changed.

We are an equal opportunity employer and value diversity at our company. We do not discriminate on the basis of race, religion, color, national origin, gender, sexual orientation, age, marital status, veteran status, or disability status. We are dedicated to creating the most epic entertainment experiences…ever. Join us!

'Blog History' 카테고리의 다른 글

개 발 일 지 056  (0) 2019.12.12
개 발 일 지 055  (0) 2019.12.11
개 발 일 지 053  (0) 2019.12.10
개 발 일 지 052  (0) 2019.12.10
개 발 일 지 051  (0) 2019.12.10

CLOUD SYSTEMS ENGINEER INTERN

IT - Infrastructure EngineeringIrvine, California

 

 

2020 SUMMER INTERNSHIPS

CLOUD SYSTEMS ENGINEER INTERN

Greetings, students! We’re geared up here to offer another round of epic internship experiences in 2020. The internship program offers the opportunity to pause your studies for one summer and work side-by-side with Blizzard Entertainment employees in your area of interest, doing real work that oftentimes ends up in production. As such, we hold you to the same high standards as anybody else in the company.

Just like our gameplay experiences, Blizzard internships are a fully immersive experience. We want interns who are enthusiastic about what they want to do for a living and excited to come in every day to learn and contribute in this hyper-creative atmosphere. Being fully engaged with our team also means communicating effectively and maintaining an open mind - one that is receptive to feedback and able to adapt and grow. Your hobbies and interests can also play in your favor. Passion for technology, gaming, game development, and in-depth knowledge of Blizzard games, products, and services will always be a plus with us, regardless of the position you’re applying for. Be passionate about who you are, be into our industry, and be willing to go all-in and embrace this opportunity to the fullest!

QUEST OBJECTIVES

Blizzard Cloud is dedicated to powering the world's most epic entertainment experiences. To achieve this, we understand that epic entertainment demands epic infrastructure.  Our mission is to provide a world-class multi-cloud with global reach. We focus on technologies that make Blizzard efficient, consistent, agile and portable across the private and public clouds. We empower rapid iteration and rapid delivery - everywhere our game developers and player community need it.

In pursuit of our mission, we run one of the largest private OpenStack clouds in the world across seven geographical sites. Operating at this scale comes with challenges. A core value of Blizzard is to learn and grow, so as we solve and overcome these challenges, we are compelled to share our solutions. To that end, we contribute to many Openstack projects including Magnum, Senlin and Designate. While we continue to scale and grow an awesome private cloud, our strategy for the future is hinged upon multi-cloud. We value public cloud for functionality, reach and scale when it makes sense. The agility offered by multi-cloud has helped realize many successes.

We are looking to hire an intern Cloud Software Engineer. This role will be focused on delivering a fixed-length project that will solve a real-world problem for Blizzard Cloud. This is a great opportunity to learn and grow with a strong engineering team, getting experience and exposure to a large scale, complex and challenging set of technologies.

ELIGIBILITY REQUIREMENTS

  • Currently enrolled in a college or university
  • Returning for at least one more semester or quarter following the summer 2020 internship
  • Able to work fulltime hours for 11 – 12 weeks at the Blizzard office indicated in this job posting between May 2020 – August 2020 or June 2020 – September 2020 (group dates depend on when you get out of school)
  • Authorized to work in the US

RESPONSIBILITIES

As an intern, you will be paired up with a mentor who will help onboard you to how we build and operate Blizzard Cloud. Your mentor will also help to get you started on your assigned project and meet frequently to assess and provide feedback and guidance.  Your assigned project will be a real-world problem that we need to be solved. You will make a lasting difference in how we power Blizzards epic entertainment experiences!

LEVEL REQUIREMENTS

  • Good understanding of Linux and network fundamentals
  • Basic knowledge of Linux virtualization, e.g. KVM, Xen
  • Ability to write software in Python or another language commonly used in systems administration

RECOMMENDED TALENTS

  • Understanding of Infrastructure as Code concepts and related tools. e.g. Git, Terraform, Ansible, Puppet
  • Experience/Knowledge of the offerings of multiple large public clouds. g. AWS, GCP, Azure, and/or infrastructure-as-a-service offerings (e.g. Openstack, OpenNebula, VMWare)

QUEST ITEMS

  • Resume
  • Cover Letter

Blizzard Entertainment is a global company committed to growing our employees. We offer generous benefits and perks with an eye on providing true work/life balance. We’ve worked hard to champion an intensely collaborative and creative environment, a diverse and inclusive employee culture, and training and opportunity for professional growth. Our people are everything. Our core values are real, and our mission has never changed.

We are an equal opportunity employer and value diversity at our company. We do not discriminate on the basis of race, religion, color, national origin, gender, sexual orientation, age, marital status, veteran status, or disability status. We are dedicated to creating the most epic entertainment experiences...ever. Join us!

Please submit your application no later than January 10, 2020.

 

 

DEVOPS ENGINEER INTERN, MONITORING & AUTOMATION

IT - GNOCIrvine, California

 

 

2020 SUMMER INTERNSHIPS

DevOps Engineer Intern, Monitoring & Automation

Greetings, students! We’re geared up here to offer another round of epic internship experiences in 2020. The internship program offers the opportunity to pause your studies for one summer and work side-by-side with Blizzard Entertainment employees in your area of interest, doing real work that oftentimes ends up in production. As such, we hold you to the same high standards as anybody else in the company.

Just like our gameplay experiences, Blizzard internships are a fully immersive experience. We want interns who are enthusiastic about what they want to do for a living and excited to come in every day to learn and contribute in this hyper-creative atmosphere. Being fully engaged with our team also means communicating effectively and maintaining an open mind - one that is receptive to feedback and able to adapt and grow. Your hobbies and interests can also play in your favor. Passion for technology, gaming, game development, and in-depth knowledge of Blizzard games, products, and services will always be a plus with us, regardless of the position you’re applying for. Be passionate about who you are, be into our industry, and be willing to go all-in and embrace this opportunity to the fullest!

QUEST OBJECTIVES

Blizzard Entertainment's operations center is looking for a DevOps engineer intern to help maintain Blizzard’s worldwide IT services. The operations center serves as the focal point for all Blizzard IT Service Operations, including the core functions of Monitoring, Request Fulfillment, and Incident, Event, and Change Management, with devops engineers responsible for the architecture/design, management, and integrations with Blizzard's monitoring and event management services. The core skillsets for a devops engineer intern include software engineering and integrations, systems engineering, and a desire to understand event/alert management, monitoring tools, and automation engines. The devops engineer intern position also relies on knowledge management skill sets to develop documentation and training guides. The operations center is a dynamic, fast-paced, high-reliability, 24 / 7 facility supporting one of the most complex and prolific gaming infrastructures on the planet. If you excited about full-stack engineering (hardware, containers, and application development), read on.

RESPONSIBILITES

  • Work with service operations managers, operations center leadership, and internal stakeholders to design and implement solutions that improve and expand Blizzard's Event Management tooling and capabilities.
  • Work with service owners to engineer and on-board new monitoring solutions to the operations center.
  • Work with operations center administrators and engineers to continuously improve event quality (signal/noise) and process/tooling performance.
  • Develop API-driven software solutions to integrate diverse commercial or internally developed tools.
  • Collaborate with management in defining metrics and KPIs critical to the analysis of event management performance.
  • Collaborate with the service operations team to develop reports to highlight monitoring/alert coverage and effectiveness for service owners and senior leadership.
  • Perform detailed research, analysis, and provide recommendations on proofs-of-concept and build vs. buy scenarios.
  • Create technical and end-user documentation for integrations and tooling managed by the Monitoring and Automation team.
  • Participate in production support and scheduled on-call responsibilities.

ELIGIBILITY REQUIREMENTS

  • Currently enrolled in a college or university
  • Returning for at least one more semester or quarter following the summer 2020 internship
  • Able to work fulltime hours for 11 – 12 weeks at the Blizzard office indicated in this job posting between May 2020 – August 2020 or June 2020 – September 2020 (group dates depend on when you get out of school)
  • Authorized to work in the US

LEVEL REQUIREMENTS

  • Experience working with Unix/Linux systems from kernel to shell and beyond, with experience working with system libraries, file systems, and client-server protocols.
  • Awareness of monitoring technology and protocols (Nagios, SolarWinds, Telegraf (TICK), Sensu, AppDynamix/NewRelic, NMS)
  • Familiarity with the ELK stack and metrics time-series databases (InfluxDB, Graphite, OpenTSDB)
  • Experience developing and writing code in at least 1 modern scripted/interpreted language (Python, C#, Ruby, Groovy, Node.js, Go)
  • Experience with reading and understanding Python, Javascript, CSS
  • Functional knowledge developing microservice-based HTTP applications and servers, including JMX, Flask, Apache/NGINX
  • Understanding of the Software Development Life Cycle; including CI and CD pipeline architecture.
  • Understanding of cloud orchestration frameworks, enterprise IT service provisioning tools, and their role in IT transformation.
  • Familiarity with service configuration and deployments tools, such as Ansible, Consul, Jenkins, Puppet, Terraform, and Vault.
  • Strong interpersonal and communication skills, able to train users on topics, provide presentations to an internal audience, and interact positively with and receive direction.

RECOMMENDED TALENTS

  • Experience with developing and delivering presentations with Microsoft PowerPoint
  • Passion for video games and technology!

QUEST ITEMS

  • Resume
  • Cover Letter
    • Why you are interested in working at Blizzard Entertainment
    • What technology or games you are currently playing with

Blizzard Entertainment is a global company committed to growing our employees. We offer generous benefits and perks with an eye on providing true work/life balance. We’ve worked hard to champion an intensely collaborative and creative environment, a diverse and inclusive employee culture, and training and opportunity for professional growth. Our people are everything. Our core values are real, and our mission has never changed.

We are an equal opportunity employer and value diversity at our company. We do not discriminate on the basis of race, religion, color, national origin, gender, sexual orientation, age, marital status, veteran status, or disability status. We are dedicated to creating the most epic entertainment experiences...ever. Join us!

Please submit your application no later than January 10, 2020.

'Blog History' 카테고리의 다른 글

개 발 일 지 055  (0) 2019.12.11
개 발 일 지 054  (0) 2019.12.10
개 발 일 지 052  (0) 2019.12.10
개 발 일 지 051  (0) 2019.12.10
개 발 일 지 050  (0) 2019.12.10

ASSOCIATE SOFTWARE ENGINEER, E-COMMERCE - PURCHASE

Battle.net & Online ProductsIrvine, California

 

The Battle.net & Online Products organization is home to 300+ superpowered engineers, program managers, and designers focused on the technology that powers Blizzard Entertainment’s games. Whether you’re playing one of our titles, chatting with friends, or just shopping online, B&OP ensures that our players are immersed in engaging, exciting, and secure experiences.

Our E-commerce team handles millions of transactions spanning the globe for the StarCraft, Diablo, World of Warcraft, Hearthstone, and Overwatch franchises. Have you ever wondered what happens when you make a purchase in Hearthstone? Are you curious about what happens during a game launch where millions of customers unlock access to games, features, upgrades, and more? We're the team that provides the platform that powers all those features and more.

As a software engineer on the E-commerce Payments team, you will a join group of engineers dedicated to building a global platform allowing our fans worldwide to experience Blizzard content. You will be a part of our continuing efforts to evolve our order acquisition and workflow orchestration systems to keep up with an ever-changing commerce landscape. You will also be exposed to the inner-workings of the online and mobile payment spaces. In this role, you will not only be writing code but be a part of projects across all phases of our SDLC.

Responsibilities

  • Design and implement new features for purchasing, inventory management, and payment processing on our cross-platform e-commerce system, including integrations with second and third parties
  • Collaborate with multiple development teams ensuring proper designs and integrations
  • Be a part of the implementation and maintenance of our infrastructure
  • Monitor, optimize, and troubleshoot performance across all tiers
  • Support and improve live production service
  • Perform research to acquire new knowledge necessary to perform tasks and maintain a process of technological evolution

Requirements

  • A minimum of 2 years of professional software engineering experience, with a solid foundation in Java, C#, or another object-oriented language
  • Proven knowledge of CS fundamentals, including algorithms, data structures, and design patterns
  • Understanding of web services, messaging middleware, security, microservices, and n-tier architectures
  • Previous experience developing, delivering, and maintaining APIs
  • Familiarity with testing practices, including regression, acceptance, functional, and load testing
  • Familiarity in data-modeling and RDBMS development practices
  • Bachelor's degree in Computer Science, Mathematics, or equivalent experience

Pluses

  • Experience developing for and operating large distributed systems at high scale (hundreds of servers, global deployments, tens of thousands of req/sec)
  • Familiarity with the Spring Framework
  • Familiarity with Docker or other container platforms
  • Familiarity with AWS or other cloud platforms
  • Experience with billing and payment systems
  • Passion for technology and video games

 

ASSOCIATE SOFTWARE WEB ENGINEER, E-COMMERCE - ONLINE SHOP

Battle.net & Online ProductsIrvine, California

 

 

The Battle.net & Online Products organization is home to 300+ superpowered engineers, program managers, and designers focused on the technology that powers Blizzard Entertainment’s games. Whether you’re playing one of our titles, chatting with friends, or just shopping online, B&OP ensures that our players are immersed in engaging, exciting, and secure experiences.

The Shop team is part of the Battle.net & Online Products organization and is responsible for Blizzard Entertainment’s digital shop web site and the tooling that powers it.  Our sites handle millions of transactions spanning the globe for the StarCraft, Diablo, World of Warcraft, Hearthstone, and Overwatch franchises.

Responsibilities 

  • Develop new features for catalog display, purchasing, and gifting, integrating with the rest of our e-commerce team and game teams. 
  • Collaborate with fellow engineers, designers, and numerous other partners to deliver quality products. 
  • Learn and grow with the team, adapting to new technologies. 
  • See projects through from requirement gathering to development, testing support, launch, and live coverage. 

Requirements 

  • Knowledge of computer science fundamentals, including algorithms, data structures, and design patterns. 
  • Familiarity with common web security practices and the reasons to use them. 
  • Experience developing with object-oriented programming and client-side javascript. 
  • Understanding of the browser DOM. 
  • Deep understanding of web tech (HTTP, WebSockets, REST, etc.) 
  • Bachelor’s Degree in Computer Science or equivalent experience 

Pluses 

  • Working knowledge of Spring framework 
  • Familiarity with the Angular framework or similar (Vue.js, React) 
  • Experience writing unit tests and automation tests 

 

 

ASSOCIATE SOFTWARE ENGINEER

Service TechnologiesIrvine, California

 

 

Blizzard Entertainment is looking for a talented software engineer to enhance our customer support applications and services.  You will collaborate with data scientists, designers, product managers, software engineers, and other partners across Blizzard to improve our customer experience both in and out of our games.

The software we build together ensures that players can enjoy our games in a positive and friendly environment and resolve any issue they encounter.  Our team loves Blizzard games and we care deeply about ensuring everyone can fully enjoy our games; if you do too, then this is the team for you!

REQUIREMENTS

  • Bachelor’s degree in Computer Science or related discipline; or equivalent experience
  • Passion to learn and grow as a software engineer
  • Excellent verbal and written communication skills

PLUSES

  • Experience developing applications or services using C#
  • Experience developing applications using the Angular framework
  • Experience developing and integrating with relational and document database solutions
  • Experience authoring, executing and analyzing the results of unit, integration, and regression tests
  • Experience with public cloud providers and private cloud solutions
  • Experience with container development and orchestration solutions
  • Contributions to open-source or personal projects
  • Passion for video games

REQUIRED APPLICATION MATERIALS

  • Resume
  • Cover letter

Blizzard Entertainment is an Equal Opportunity Employer. All qualified applicants will receive consideration for employment without regard to race, color, religion, sex, sexual orientation, gender identity, gender expression, national origin, protected veteran status, or any other basis protected by applicable law, and will not be discriminated against on the basis of disability.

Blizzard Entertainment is a global company committed to growing our employees along with the business. We offer generous benefits and perks with an eye on providing true work/life balance. We’ve worked hard to foster an intensely collaborative and creative environment, a diverse and inclusive employee culture, and training and opportunity for professional growth. Our people are everything. Our core values are real, and our mission has never changed. We are dedicated to creating the most epic entertainment experiences…ever. Join us!

'Blog History' 카테고리의 다른 글

개 발 일 지 054  (0) 2019.12.10
개 발 일 지 053  (0) 2019.12.10
개 발 일 지 051  (0) 2019.12.10
개 발 일 지 050  (0) 2019.12.10
개 발 일 지 049  (0) 2019.12.10

SENIOR SOFTWARE ENGINEER (C++), GAME SERVICES - CORE

Battle.net & Online ProductsIrvine, California

 

 

The Battle.net & Online Products organization is home to 300+ superpowered engineers, program managers, and designers focused on the technology that powers Blizzard Entertainment’s games. Whether you’re playing one of our titles, chatting with friends, or just shopping online, B&OP ensures that our players are immersed in engaging, exciting, and secure experiences.

Blizzard Entertainment has an opening for a talented and enthusiastic Senior Software Server Engineer to join our Battle.net Game Services Group

The Game Services Group develops the software, services and infrastructure that keeps millions of players online simultaneously worldwide, 24 hours a day, 365 days a year.  When a player logs in, sends a friend request, a whisper, or a chat within one of our rich virtual worlds, Game Services powers these capabilities.  When you use voice chat, check your profile statistics, or create a new social group, we are the team that makes those things possible.  From Overwatch to Hearthstone, StarCraft 2 to Diablo 3, World of Warcraft to Heroes, regardless of the game, time zone, or scale, Game Services is ready to answer the call with effectiveness and professionalism, acting as the central pillar to supercharge all player engagement.

Responsibilities

  • Work with a small and talented team to develop scalable, highly performant platform services
  • Implement new features and services to support the needs of multiple teams
  • Coordinate with embedded and external teams, create relationships and assist with shared initiatives
  • Participate in the ongoing effort to improve our platform infrastructure, with the goal of achieving ever-increasing service availability
  • Perform research to acquire new knowledge necessary to perform assigned tasks and maintain a process of technological evolution
  • Develop unit and integration test code to validate service reliability
  • Mentor and educate more junior engineers on the team

Requirements

  • A degree in computer science, or a related field
  • A minimum of 5 years of relevant work experience
  • Ability to work in a collaborative environment
  • Excellent communication skills
  • Advanced understanding of C++
  • Prior development work on distributed systems and client/server architectures
  • Strong data-structure, logic, and algorithm skills
  • Knowledge of network and server security issues
  • Experience with performance analysis and code optimization
  • Experience with protocol and API design
  • Database development experience (MySQL, Oracle, Cassandra, etc.)
  • Self-motivated and able to break down complex tasks
  • A desire to help make the service the best that it can be for our players

Pluses

  • Proficient in at least one scripting language such as Python
  • Linux development experience (server applications, gdb debugging, etc.)
  • Experience with cloud/virtualization/containerization technologies and infrastructure
  • Enthusiastic about supporting a live service
  • Familiarity with Blizzard Entertainment games and features, at least at a casual player level

'Blog History' 카테고리의 다른 글

개 발 일 지 053  (0) 2019.12.10
개 발 일 지 052  (0) 2019.12.10
개 발 일 지 050  (0) 2019.12.10
개 발 일 지 049  (0) 2019.12.10
개 발 일 지 048  (0) 2019.12.10

SOFTWARE ENGINEER, SERVER - MOBILE

MobileIrvine, California

 

 

We are looking for a talented server engineer, who is excited to architect and implement server technology at a global scale in service of amazing experiences for our players.  If you have a passion for game development and want to participate in the future of Blizzard, we would love to hear from you!  Our team values creativity, collaboration and a commitment to quality and we are searching for like-minded developers to add to our team of talented game makers.

You will help develop new systems and services for our game, coordinating across disciplines with designers and client engineers.  In addition to having the usual technical chops, we want to hear from qualified engineers who have an absolute passion for gaming, programming, and finding simple solutions to complex problems. The ideal candidate should be excited by the idea of working closely with designers to create compelling and epic features that will keep players engaged for years. We love engineering, geeking out over new technology and helping move the industry forward. Most importantly, we learn, grow, and ultimately enjoy success as a team, overcoming new challenges together.

Responsibilities

  • Collaborate with other engineers to design and implement server architecture
  • Design and implement server-side components in support of gameplay features
  • Coordinate with client engineers on gameplay simulation and network efficiency
  • Design and deliver code that is robust, extensible, flexible and simple to use
  • Champion Blizzard’s core values, especially “Gameplay First”

Requirements

  • Strong, proven programming skills (C#, C++, Python, .NET Core, Mono)
  • Minimum of 2+ years of relevant professional experience in software development
  • Expertise in relevant technologies such as SQL, Cassandra, Docker, Kubernetes, etc.
  • Networking experience in TCP, UDP, and higher-level protocols
  • Ability to communicate effectively with designers and client engineers
  • Self-motivated and willing to participate in all areas of engineering

Pluses

  • Bachelor or Master degree in Computer Science, related field or equivalent experience
  • Previous experience shipping and supporting a Live product at a global scale
  • Familiar with security considerations (encryption, denial of service)
  • Familiar with cloud technologies (virtualization, containers)
  • Developed software in a cloud-hosted environment (AWS, GCP)
  • iOS and/or Android software development expertise
  • Linux development experience
  • Avid mobile gamer

Required Application Materials

  • Resume
  • Cover Letter which should include:
    • Why you are interested in working at Blizzard
    • What games you are currently playing

Blizzard Entertainment is a global company committed to growing our employees along with the business. We offer generous benefits and perks with an eye on providing true work/life balance. We’ve worked hard to foster an intensely collaborative and creative environment, a diverse and inclusive employee culture, and training and opportunity for professional growth. Our people are everything. Our core values are real, and our mission has never changed. We are dedicated to creating the most epic entertainment experiences…ever. Join us! 

We are an equal opportunity employer and value diversity at our company. We do not discriminate on the basis of race, religion, color, national origin, gender, sexual orientation, age, marital status, veteran status, or disability status.

'Blog History' 카테고리의 다른 글

개 발 일 지 052  (0) 2019.12.10
개 발 일 지 051  (0) 2019.12.10
개 발 일 지 049  (0) 2019.12.10
개 발 일 지 048  (0) 2019.12.10
개 발 일 지 047  (0) 2019.12.10

SOFTWARE ENGINEER, MOBILE

Media NetworkIrvine, California

 

Blizzard Entertainment is looking for a ​rockstar mobile engineer who has a passion for building epic video experiences. The ideal candidate would relish in the details with an affinity for Blizzard games and Esports. The Blizzard Media Network team is responsible for building and supporting the video experience for Android and iOS media apps across Activision/Blizzard/King. 

Responsibilities

  • Focus on building front end experience supporting the standard media mobile playback experience company-wide.  
  • Collaborate with product, design and dev ops in delivering epic video experiences 
  • Contribute to the architecture, design, implementation, deployment, and support of mobile video experiences 
  • Instrument applications to monitor for engagement, user pathing, quality of service, and performance 
  • Communicate estimations/timelines/progress of individual contribution, raise risks and ensure deliverables are documented
  • Contribute to app architecture/design reviews, code reviews, writing unit tests, performance tuning
  • Help ideate and prototype new features 

Requirements

  • Bachelor's degree in Computer Science, ​Engineering​, or equivalent experience 
  • 3+ years of relevant native mobile development experience
  • Demonstrated skills in Android development (Java, Kotlin)
  • One or more applications successfully deployed to the Google Play Store
  • Understanding of Android design principles, guidelines, and best practices
  • Deep understanding of CI workflow that leverages industry-standard Android testing  and builds tools needed to deliver quality apps
  • Knowledge of Exoplayer framework
  • Experience working/integrating with video player solutions such as Bitmovin, Brightcove, JWPlayer,
  • Drive quality and stability by writing unit, functional and performance tests with Test  Driven Development (TDD)
  • Experience with debugging and profiling native applications on major devices
  • Excellent analytical, problem solving and debugging skills
  • Attention to detail and quality
  • Effective communication skills with developers of all technical skill levels 

Pluses

  • Experience in iOS development including Objective-C, Swift, Cocoa Touch, Xcode,  CocoaPods, etc. 
  • Experience working with content (live, vod) encoding and transcoding
  • Server-Side Ad Insertion (SSAI) technology stacks including MediaTailor, DFP, SpotX
  • Understanding of video codecs and compression (H.264/AVC, H.265/HEVC) and streaming technologies (HLS, MPEG-DASH)
  • Experience in Broadcast/Broadband Television, Video-On-Demand
  • Experience with digital rights management
  • Deep understanding of all aspects of content clipping, live video encoding, and DVR
  • Experience building video experiences for OTT devices (Roku, Apple TV, Google Chromecast, Amazon Fire, etc.)
  • Familiarity with HTTP/S and basic networking concepts
  • Familiarity with content protection, and native security standards
  • Experience with identity management (OAuth, Open ID Connect, SAML, etc.) 

Required Application Materials

  • Resume
  • Cover Letter

Blizzard Entertainment is a global company committed to growing our employees. We offer generous benefits and perks with an eye on providing true work/life balance. We’ve worked hard to champion an intensely collaborative and creative environment, a diverse and inclusive employee culture, and training and opportunity for professional growth. Our people are everything. Our core values are real, and our mission has never changed.

We are an equal opportunity employer and value diversity at our company. We do not discriminate on the basis of race, religion, color, national origin, gender, sexual orientation, age, marital status, veteran status, or disability status. We are dedicated to creating the most epic entertainment experiences…ever. Join us!

'Blog History' 카테고리의 다른 글

개 발 일 지 051  (0) 2019.12.10
개 발 일 지 050  (0) 2019.12.10
개 발 일 지 048  (0) 2019.12.10
개 발 일 지 047  (0) 2019.12.10
개 발 일 지 046  (0) 2019.12.10

SENIOR SOFTWARE ENGINEER (IOS), APPLICATIONS - MOBILE

Battle.net & Online ProductsIrvine, California

 

The Battle.net & Online Products organization is home to 300+ superpowered engineers, program managers, and designers focused on the technology that powers Blizzard Entertainment’s games. Whether you’re playing one of our titles, chatting with friends, or just shopping online, B&OP ensures that our players are immersed in engaging, exciting, and secure experiences.

Are you passionate about iOS development? Would connecting millions of the world’s most passionate gamers together fill you with pride? Would you like to provide the social gateway to a vibrant and thriving online gaming community?

If your brain is screaming “yes!” to these questions, then the Batttle.net and Online Products Applications group is calling for you to join our Mobile team.

Our Mobile team develops Blizzard quality mobile applications for both iOS and Android.  The primary mission of our Batttle.net and Online Products Mobile team is to allow players to enjoy the Blizzard community wherever they may be. We develop the Blizzard Mobile Authenticator, BlizzCon and Battle.net Mobile App. Our flagship app (Battle.net Mobile) presents a place where millions of players worldwide can socialize with their friends and fellow gamers.

As one of our Senior Software Engineers, you must be able to work both independently and with team members across engineering, program management, and design. Enthusiasm and a drive for crafting epic social and content experiences is a must. If the idea of reaching millions of players across the globe appeals to your inner geek, then our team may just be the place for you.

Requirements

  • Mastery of Swift development with a minimum of 5 years’ professional experience
  • Experience using iOS UI frameworks and building custom UI
  • Excellent verbal and written communication skills
  • Bachelor’s Degree in Computer Science or equivalent experience

Pluses

  • Fluency with RxSwift and Reactive patterns strongly desired
  • Objective-C programming experience
  • Familiarity with networking and high levels protocols such as HTTP or XMPP
  • Experience working with 3rd party libraries (RxSwift, Alamofire, Protobuf, etc…)
  • Experience with shipping and maintaining mobile applications that support a global user base
  • Experience supporting a live product (ship planning, risk mitigation, etc..)
  • Agile development experience
  • Passion for video games or social networks

'Blog History' 카테고리의 다른 글

개 발 일 지 050  (0) 2019.12.10
개 발 일 지 049  (0) 2019.12.10
개 발 일 지 047  (0) 2019.12.10
개 발 일 지 046  (0) 2019.12.10
개 발 일 지 045  (0) 2019.12.10

SOUND EDITOR - TEMP

SoundIrvine, California

 

 

Blizzard Entertainment's Sound Department is looking for an exceptional Sound Editor to work on various Blizzard Entertainment properties. You’ll need to have extensive experience in linear post-production editorial as well as some mixing and live sound recording background. You will work closely with various departments and with the Lead Sound Supervisor on various video and cinematic projects, performing dialog, foley, and FX editing, assisting with live sound recording on video shoots, and occasional mixing.  You should also have a firm grasp on troubleshooting signal flow, creating and modifying Pro Tools templates and operating digital mixing consoles. You should be comfortable working under tight deadlines, have excellent organizational and time management skills, readily accept direction and criticism, adapt easily to shifting priorities, and be capable of working with equal effectiveness, both solo and as part of a project team. Requirements

  • Experience editing and conforming sound-to-picture
  • Proficient in the editing dialog
  • Experience working with commercial audio tools on multiple platforms and workstations, including Pro Tools
  • Able to work with equal effectiveness, both solo and as part of a project team
  • Experience using and troubleshooting Windows and Macintosh operating systems
  • Proven skills with live audio mixing and microphone placement
  • Experience with digital mixing consoles
  • Experience with the live recording (with emphasis on dialog recording)
  • Experience with post-production audio mixing and mastering techniques

 Pluses

  • Mixing/recording experience in a broadcast environment
  • Experience with field recording equipment and techniques

Required Application Materials: Resume (PDF Preferred) Job Status: Temporary Primary Location: United States-CA-Irvine Blizzard Entertainment is a global company committed to growing our employees along with the business. We offer generous benefits and perks with an eye on providing true work/life balance. We’ve worked hard to foster an intensely collaborative and creative environment, a diverse and inclusive employee culture, and training and opportunity for professional growth. Our people are everything. Our core values are real, and our mission has never changed. We are dedicated to creating the most epic entertainment experiences…ever. Join us!

We are an equal opportunity employer and value diversity at our company. We do not discriminate on the basis of race, religion, color, national origin, gender, sexual orientation, age, marital status, veteran status, or disability status.

'Blog History' 카테고리의 다른 글

개 발 일 지 049  (0) 2019.12.10
개 발 일 지 048  (0) 2019.12.10
개 발 일 지 046  (0) 2019.12.10
개 발 일 지 045  (0) 2019.12.10
개 발 일 지 044  (0) 2019.12.10

SENIOR SOFTWARE ENGINEER, APPLICATION SECURITY

SecurityAustin, Texas

 

 

We are looking for a talented and motivated Senior Software Engineer specializing in Application Security to join its ranks in Austin, TX.

If this is you, you are a Software Engineer with a deep passion for security. This person should have experience with a variety of systems, languages, tools, and architectures.

About Our Team

The Security Development (SecDev) organization owns all security-related software development efforts across Blizzard. We are a mix of hardcore software engineers, server developers and security-minded individuals who work together to ensure that our company and players are safe from Evil.

We work with all games and software platforms produced by Blizzard, so we get exposed to a mind-boggling array of technologies – not only security technologies but graphic engines, machine learning systems, web servers, databases, etc. It’s an incredible place for passionate software developers to get acquainted with all aspects of developing world-class videogames.

You will be part of SecDev’s Application Security team. You will embed yourself in one or more of Blizzard’s teams to help them build secure software. Not only you will help find and fix existing vulnerabilities, but also actively participate in preventing new vulnerabilities from being introduced. You will also have the opportunity to work with elite software engineers to solve specific hard security problems, “tiger team” style.

Responsibilities

  • Perform security reviews and provide insights throughout all phases of software development with our partner teams.
  • Develop and enhance new and existing security-focused tools, systems and services.
  • Evaluate the impact on the organization of current security advisories, publications, and trends.
  • Develop new security solutions/tools to prevent security vulnerabilities and assist in addressing existing security problems.
  • Help detect, highlight, and close security vulnerabilities that surface during the software development lifecycle.

Requirements

  • Bachelor’s Degree in Computer Science or equivalent experience.
  • A minimum of 5 years of experience in secure Web Application development.
  • Expert knowledge of security problems associated with modern web languages and frameworks, including but not limited to Javascript (front and backend), Java and C#.
  • Knowledge of penetration testing techniques, application security vulnerabilities, OWASP Top 10, SANS 25, CWE, and Whitebox exploitation via Burpsuite/Fiddler or similar.
  • Excellent ability to discover and demonstrate flaws such as SQL injection, XSS, and CSRF.
  • Solid understanding of database (SQL, NoSQL) security.
  • Knowledge of encryption theory and practice (e.g. TLS, HMAC, RSA, AES, PKI) .
  • Be able to adapt and be entrepreneurial and solve problems quickly, creatively, and collaboratively.

Pluses

  • Aptitude for doing threat modeling on complex systems.
  • Experience in Mobile software development and security.
  • Experience with application security testing tools (static and dynamic code analyzers, fuzzing tools).
  • Enjoys tasty beverages – we work hard and play hard.

Blizzard Entertainment is a global company committed to growing our employees along with the business. We offer generous benefits and perks with an eye on providing true work/life balance. We’ve worked hard to foster an intensely collaborative and creative environment, a diverse and inclusive employee culture, and training and opportunity for professional growth. Our people are everything. Our core values are real, and our mission has never changed. We are dedicated to creating the most epic entertainment experiences…ever. Join us!

'Blog History' 카테고리의 다른 글

개 발 일 지 048  (0) 2019.12.10
개 발 일 지 047  (0) 2019.12.10
개 발 일 지 045  (0) 2019.12.10
개 발 일 지 044  (0) 2019.12.10
개 발 일 지 043  (0) 2019.12.10

SENIOR PROJECT MANAGER, SECURITY

SecurityIrvine, California

 

 

You must have a strong and demonstrated aptitude for CYBERSECURITY, PHYSICAL SECURITY, AND IT, supported by extensive and diverse experience in leading high-profile technical programs and projects. Your responsibilities will span into the domain knowledge of Enterprise IT Security, IT Engineering, IT Operations, and Application Development. You will provide overall leadership guidance and direction to your project teams.

ESSENTIAL JOB FUNCTIONS:

  • Responsible for delivering Global Security programs and projects with Security partners, IT, Game Teams, Compliance, and Legal.
  • Help to improve the Security project management framework and reporting.
  • Manage day to day department tasks and issues.
  • Support the Change Management, Cyber Security Incident Management, Physical Security Incident Management, and Asset Management/Tracking.

RESPONSIBILITIES:

  • Lead direct/indirect project teams that collaboratively work well with each other as well as other external teams.
  • Facilitate communication with stakeholders and senior management teams to ensure expectations are managed correctly.
  • Draw on extensive technical experience to understand change implications from a broad technical perspective, adding a ‘big picture’ view to the discussions.
  • Facilitate regularly scheduled team meetings to track project progress and keep the team informed of changes in priority/scope. 
  • Define, negotiate, communicate, implement and monitor quality standards on all project deliverables.
  • Lead workgroup for technical requirements, design deliverables, or closure acceptance list.
  • Ensure project documents are up to date and stored appropriately in Confluence.
  • Identify, analyze, prioritize, mitigate and communicate project risks and issues.
  • Manage project backlog and continuously groom it.
  • Collaborate with stakeholders to identify acceptance criteria.
  • Act as project team leader and become primary interface to all stakeholders.
  • Drive the team cadence - project, communication and partner engagements (internal & external).
  • Ensure 3rd party vendors understand and can deliver on expectations and acceptance criteria.
  • Forecast, track and manage project budgets, POs and invoices.
  • Effectively apply Project Management standards and practices in the areas of project planning, coordinating, budget management, scheduling and monitoring.
  • Present proposals, progress reports and recommendations to the highest levels in the organization, both verbally and in writing.
  • Drive the beginning to end stakeholder experience.
  • Manage sensitive cross-team engagements on subjects such as dependency alignment, schedule alignment, and managing expectations with internal and external customers.
  • Manage multiple simultaneous projects.
  • Provide support to incident, problem and change management.

MINIMUM JOB REQUIREMENTS:

  • Certification in PMP or PSM is strongly needed. ITIL (methodology), COBIT, MCSE, and/or ISSP are highly desired.
  • Bachelor's or Master’s degree in Computer Science or related field, or equivalent experience.
  • Basic understanding of accounting principles.
  • Minimum 4+ years of continuous experience as an IT engineer or Technical Project Lead.
  • Vast technical knowledge of IT infrastructure is a must:
    • Cyber Security frameworks (ISO, NIST, CIS, ect…)
    • N tiered architecture
    • Network (TCP/IP, Firewall concepts)
    • OS concepts: Linux, AIX, Windows Server
    • Storage (SAN, NAS)
  • Strong understanding of Agile/Scrum or KANBAN framework.
  • Thoroughly versed in SDLC concepts and practices, particularly as it relates to promotion and deployment of routine fixes and major releases into a production environment.
  • Proficiency in Confluence and JIRA toolset. Admin Level is highly desired.
  • Strong organization and leadership skills with the ability to facilitate technical sessions and perform mentoring for less senior team members.
  • Capable of communicating complex technical information to a non-technical audience and of communicating structured production process requirements to a technical audience.

We are an Equal Opportunity Employer. All qualified applicants will receive consideration for employment without regard to race, color, religion, sex, sexual orientation, gender identity, gender expression, national origin, protected veteran status, or any other basis protected by applicable law, and will not be discriminated against on the basis of disability.

Blizzard Entertainment is a global company committed to growing our employees along with the business. We offer generous benefits and perks with an eye on providing true work/life balance. We've worked hard to foster an intensely collaborative and creative environment, a diverse and inclusive employee culture, and training and opportunity for professional growth. Our people are everything. Our core values are real, and our mission has never changed. We are dedicated to creating the most epic entertainment experiences… ever. Join us!

'Blog History' 카테고리의 다른 글

개 발 일 지 047  (0) 2019.12.10
개 발 일 지 046  (0) 2019.12.10
개 발 일 지 044  (0) 2019.12.10
개 발 일 지 043  (0) 2019.12.10
개 발 일 지 042  (0) 2019.12.10

SENIOR RED TEAM SPECIALIST

SecurityIrvine, California

 

 

As a member of the red team, you provide the technical expertise required to carry out internal and external hacking exercises.  You will seek out and bring to light company crushing vulnerabilities in real-world scenarios using any methods at your disposal.  From here you will create and provide presentations to executive management highlighting outcomes of the team’s operations with recommendations for remediation or mitigation.  

This is a position for highly driven autonomous security professionals that work well in a team-oriented environment.

Responsibilities

  • Plan and conduct attacks on internally or externally hosted applications and infrastructure on a global scale with an emphasis on critical functions.
  • Be flexible with regard to schedule to accommodate the most effective time to carry out attack campaigns depending on objectives defined.
  • Design and develop scripts, frameworks, tools, and the methods required for facilitating and executing complex attacks, emulating malicious actor behavior aimed at avoiding detection.
  • Review the results of any operation in order to determine the severity of findings and identify potential remediation or mitigation strategies.
  • Work in a fast-paced, tightly knit and coordinated team within a highly technical environment and have the willingness to learn new skills as required.
  • Compile and present comprehensive campaign results to process/system owners as well as senior leadership.
  • Create extensive documentation and be able to present your findings to the rest of the team or subject matter experts as necessary.
  • Define and develop an agenda for training and educating employees on advanced exploits, tools, and frameworks.
  • Research emerging technologies and exploitation methods relevant to the company.
  • Explore opportunities to discover previously unknown or undisclosed vulnerabilities.
  • Execute on your comprehensive knowledge and specialization in the assigned areas of skill in complex and challenging situations.
  • Possess and employ a high level of proficiency in one or more disciplines employed within the red team, such as web applications, system exploitation, network-based attacks, reverse engineering, social engineering, etc.

Qualifications

  • Bachelor’s degree in Computer Science, Information Security, a related program, or equivalent work experience
  • A minimum of 6 years’ of professional experience in information security as a penetration tester, reverse engineer, researcher or threat analyst / IR team member
  • Able to operate at an advanced level of written and spoken communication
  • Prior experience or expertise performing red team operations

Disciplines / Specializations Preferred

  • High level of knowledge in application, system and network exploitation or enumeration techniques utilized today ranging from an injection, privilege escalation, buffer overflows, fuzzing, scanning, and anything else a minion of Diablo would perform
  • Experience with writing and demonstrating proof of concept work from an exploitation or attack perspective
  • Capable to create and employ modules and tailored payloads for common testing frameworks or tools
  • Extensive understanding of cryptography, its role in the enterprise, and its strengths as well as weaknesses
  • Knowledge of tactics, techniques, and procedures that could be used for recon, persistence, lateral movement, and exfiltration
  • Programming exposure and familiarity with languages such as C /C# / C++, Java, or Assembly
  • Proficiency in one or more scripting languages, e.g. Perl, Python, PowerShell or shell scripting
  • Prior experience with reverse engineering, malware analysis, and forensic tools
  • Solid understanding of networking topologies, protocol usage, and enterprise hardware including switches, routers, firewalls and their roles in security
  • Knowledge of access control methodologies, network/host intrusion detection, vulnerability management tools, patch management tools, penetration testing tools, and AV solutions
  • Knowledge or experience in infiltration of physical systems such as lock picking, social engineering, and hardware authentication bypass
  • Experience with hardware hacking or building custom hardware for the purpose of exploitation

Required Application Materials

  • Resume
  • Cover Letter (optional) which should include:
      • Why you are interested in working at Blizzard
      • What games you are currently playing

Blizzard Entertainment is a global company committed to growing our employees along with the business. We offer generous benefits and perks with an eye on providing true work/life balance. We’ve worked hard to foster an intensely collaborative and creative environment, a diverse and inclusive employee culture, and training and opportunity for professional growth. Our people are everything. Our core values are real, and our mission has never changed. We are dedicated to creating the most epic entertainment experiences...ever. Join us!

'Blog History' 카테고리의 다른 글

개 발 일 지 046  (0) 2019.12.10
개 발 일 지 045  (0) 2019.12.10
개 발 일 지 043  (0) 2019.12.10
개 발 일 지 042  (0) 2019.12.10
개 발 일 지 041  (0) 2019.12.10

SENIOR PROJECT MANAGER, SECURITY

SecurityIrvine, California

 

 

You must have a strong and demonstrated aptitude for CYBERSECURITY, PHYSICAL SECURITY, AND IT, supported by extensive and diverse experience in leading high-profile technical programs and projects. Your responsibilities will span into the domain knowledge of Enterprise IT Security, IT Engineering, IT Operations, and Application Development. You will provide overall leadership guidance and direction to your project teams.

ESSENTIAL JOB FUNCTIONS:

  • Responsible for delivering Global Security programs and projects with Security partners, IT, Game Teams, Compliance, and Legal.
  • Help to improve the Security project management framework and reporting.
  • Manage day to day department tasks and issues.
  • Support the Change Management, Cyber Security Incident Management, Physical Security Incident Management, and Asset Management/Tracking.

RESPONSIBILITIES:

  • Lead direct/indirect project teams that collaboratively work well with each other as well as other external teams.
  • Facilitate communication with stakeholders and senior management teams to ensure expectations are managed correctly.
  • Draw on extensive technical experience to understand change implications from a broad technical perspective, adding a ‘big picture’ view to the discussions.
  • Facilitate regularly scheduled team meetings to track project progress and keep the team informed of changes in priority/scope. 
  • Define, negotiate, communicate, implement and monitor quality standards on all project deliverables.
  • Lead workgroup for technical requirements, design deliverables, or closure acceptance list.
  • Ensure project documents are up to date and stored appropriately in Confluence.
  • Identify, analyze, prioritize, mitigate and communicate project risks and issues.
  • Manage project backlog and continuously groom it.
  • Collaborate with stakeholders to identify acceptance criteria.
  • Act as a project team leader and become the primary interface to all stakeholders.
  • Drive the team cadence - project, communication and partner engagements (internal & external).
  • Ensure 3rd party vendors understand and can deliver on expectations and acceptance criteria.
  • Forecast, track and manage project budgets, POs, and invoices.
  • Effectively apply Project Management standards and practices in the areas of project planning, coordinating, budget management, scheduling, and monitoring.
  • Present proposals, progress reports and recommendations to the highest levels in the organization, both verbally and in writing.
  • Drive the beginning to end stakeholder experience.
  • Manage sensitive cross-team engagements on subjects such as dependency alignment, schedule alignment, and managing expectations with internal and external customers.
  • Manage multiple simultaneous projects.
  • Provide support to incident, problem and change management.

MINIMUM JOB REQUIREMENTS:

  • Certification in PMP or PSM is strongly needed. ITIL (methodology), COBIT, MCSE, and/or ISSP are highly desired.
  • Bachelor's or Master’s degree in Computer Science or related field, or equivalent experience.
  • Basic understanding of accounting principles.
  • Minimum 4+ years of continuous experience as an IT engineer or Technical Project Lead.
  • Vast technical knowledge of IT infrastructure is a must:
    • Cyber Security frameworks (ISO, NIST, CIS, etc…)
    • N tiered architecture
    • Network (TCP/IP, Firewall concepts)
    • OS concepts: Linux, AIX, Windows Server
    • Storage (SAN, NAS)
  • Strong understanding of Agile/Scrum or KANBAN framework.
  • Thoroughly versed in SDLC concepts and practices, particularly as it relates to promotion and deployment of routine fixes and major releases into a production environment.
  • Proficiency in Confluence and JIRA toolset. Admin Level is highly desired.
  • Strong organization and leadership skills with the ability to facilitate technical sessions and perform mentoring for less senior team members.
  • Capable of communicating complex technical information to a non-technical audience and of communicating structured production process requirements to a technical audience.

We are an Equal Opportunity Employer. All qualified applicants will receive consideration for employment without regard to race, color, religion, sex, sexual orientation, gender identity, gender expression, national origin, protected veteran status, or any other basis protected by applicable law, and will not be discriminated against on the basis of disability.

Blizzard Entertainment is a global company committed to growing our employees along with the business. We offer generous benefits and perks with an eye on providing true work/life balance. We've worked hard to foster an intensely collaborative and creative environment, a diverse and inclusive employee culture, and training and opportunity for professional growth. Our people are everything. Our core values are real, and our mission has never changed. We are dedicated to creating the most epic entertainment experiences… ever. Join us!

'Blog History' 카테고리의 다른 글

개 발 일 지 045  (0) 2019.12.10
개 발 일 지 044  (0) 2019.12.10
개 발 일 지 042  (0) 2019.12.10
개 발 일 지 041  (0) 2019.12.10
개 발 일 지 040  (0) 2019.12.10

SENIOR GAMES WRITER, OVERWATCH

OverwatchIrvine, California

 

 

Blizzard Entertainment is looking for an experienced senior game writer to join the Overwatch team. As part of the writing team, your day to day responsibilities will include dialogue writing, story development, and content implementation. In addition, you will frequently be called upon to assist with editing, research, and intellectual property management.

The ideal candidate will have demonstrated success as an experienced game developer with strong creative writing experience, excellent collaboration skills, and a real passion for Overwatch.

Responsibilities

  • Quickly write and iterate on compelling dialogue for characters, missions, and cinematics
  • Write an in-game backstory for the world, factions, and characters
  • Contribute to the story development of the Overwatch universe
  • Maintain the vision of the Overwatch universe
  • Do research gathering and documentation
  • Perform editing tasks as needed
  • Perform other duties that may be assigned by team management

Requirements

  • 3+ years of industry experience as a writer/story developer
  • At least one shipped AAA game title in a writing or game design role
  • Understanding and knowledge of the universe of Overwatch
  • Excellent written and verbal communications skills
  • Able to create dynamic dialogue for Overwatch heroes
  • Able to act independently on writing tasks
  • Excellent organizational skills and able to work well under deadlines
  • Work and thrive in a collaborative team environment
  • Knowledge of current successful intellectual properties in today’s popular culture
  • Plays and has knowledge of modern video games
  • Technically proficient to learn toolsets to implement work into the game

Pluses

  • Experience in game design
  • Understand various game toolsets
  • Successfully published writing work (novels, short fiction, film, television, comics)
  • Bachelor's degree or equivalent experience

Application Materials

  • Links or attachments of writing samples/portfolio (preferred)
  • Cover Letter (preferred)
  • Resume (required)

Blizzard Entertainment is a global company committed to growing our employees along with the business. We offer generous benefits and perks with an eye on providing true work/life balance. We’ve worked hard to foster an intensely collaborative and creative environment, a diverse and inclusive employee culture, and training and opportunity for professional growth. Our people are everything. Our core values are real, and our mission has never changed. We are dedicated to creating the most epic entertainment experiences…ever. Join us!

'Blog History' 카테고리의 다른 글

개 발 일 지 044  (0) 2019.12.10
개 발 일 지 043  (0) 2019.12.10
개 발 일 지 041  (0) 2019.12.10
개 발 일 지 040  (0) 2019.12.10
개 발 일 지 039  (0) 2019.12.09

LEAD EDITOR, CREATIVE DEVELOPMENT

Creative DevelopmentIrvine, California

 

 

Blizzard Entertainment is looking for a talented and experienced publishing editor for the Story and Franchise team in Irvine, California. Story and Franchise focus on developing Blizzard Entertainment’s universes through a variety of media, including animation, cinematics, illustrations, novels, comics, and more, working with internal as well as external talent.

The lead editor, publishing, will work closely with the director of creative development to create epic published products and grow Blizzard’s exciting publishing program in a bold new direction.

The lead editor will also interface heavily with Blizzard’s licensing and game teams and will be the day-to-day point of contact with our publishing partners’ editorial staff. The ideal candidate will have exceptional creativity and the ability to oversee the development of multiple projects at once, providing program management as well as strong editorial feedback on manuscripts in various forms of published media.

Responsibilities:

  • Develop, contribute to, and manage comics, novels, young readers, art books and specialty books.
  • Partner with the director of creative development on creative and strategic ideation and planning.
  • Partner with development, game teams, and licensing teams on new and existing published products.
  • Manage the Blizzard publishing program’s editorial and strategic direction in partnership with licensing and Story and Franchise leadership.
  • Manage a team of editors.
  • Develop and route approvals for published Blizzard Entertainment products.
  • Function as a publisher on all internally produced Blizzard published products.
  • Serve as the point of creative contact to external partner editorial staff.

Requirements:

  • A minimum of 7 years’ experience as a senior editor working on high-profile published properties
  • Excellent organizational skills and a detail-oriented approach to problem-solving
  • Able to communicate effectively across multiple teams, with excellent written and oral communication skills
  • Able to creatively collaborate and facilitate creative environments for partnered talent
  • A strong desire to explore new directions in the ever-changing publishing landscape
  • Strong connections and relationships with colleagues in the publishing industry, including authors, artists, agents, and designers.
  • Extensive knowledge of story development from concept to the final product
  • Knowledge of publishing in a variety of media
  • Able to work well in a collaborative team environment and within an iterative development process
  • Strong storytelling skills and the ability to provide constructive criticism
  • Strong understanding of trans-media theory and the desire to apply it
  • Working knowledge of Blizzard Entertainment’s intellectual properties
  • A passion for story, art, and the future of the publishing industry

Pluses:

  • A passion for games, movies, graphic novels, and other elements of pop culture
  • Extensive understanding of one or more of Blizzard Entertainment’s intellectual properties
  • Extensive knowledge of Blizzard Entertainment’s published products, including the novels, comics, manga, and online publications

Application Materials:

  • Resume (PDF Preferred)
  • Cover Letter which should include:
    • Why you are interested in working at Blizzard and position
    • What games you are currently playing

Primary Location: United States-CA-Irvine

Blizzard Entertainment is a global company committed to growing our employees along with the business. We offer generous benefits and perks with an eye on providing true work/life balance. We’ve worked hard to foster an intensely collaborative and creative environment, a diverse and inclusive employee culture, and training and opportunity for professional growth. Our people are everything. Our core values are real, and our mission has never changed. We are dedicated to creating the most epic entertainment experiences…ever. Join us!

We are an equal opportunity employer and value diversity at our company. We do not discriminate on the basis of race, religion, color, national origin, gender, sexual orientation, age, marital status, veteran status, or disability status.

'Blog History' 카테고리의 다른 글

개 발 일 지 043  (0) 2019.12.10
개 발 일 지 042  (0) 2019.12.10
개 발 일 지 040  (0) 2019.12.10
개 발 일 지 039  (0) 2019.12.09
개 발 일 지 038  (0) 2019.12.09

 

 

EDITOR, CREATIVE DEVELOPMENT

Creative DevelopmentIrvine, California

 

 

Blizzard Entertainment is looking for a talented and experienced editor for the Story and Franchise Development team in Irvine, California. Story and Franchise focus on developing Blizzard Entertainment’s universes through a variety of media, including animation, cinematics, illustrations, novels, comics, and more, working with internal as well as external talent.

As part of an editorial team, this role will create epic published products and help to expand Blizzard’s exciting publishing program in bold, new directions.

The editor will interface heavily with Blizzard’s licensing and game teams, managing the creative vision for each assigned project. In addition, the editor will work directly with the editorial and design staffs of our various publishing partners on licensed projects.

You have exceptional creativity and the ability to oversee the development of multiple projects at once, providing strong editorial feedback on manuscripts and accompanying art in various forms of published media.

Responsibilities:

  • Pitch, develop and edit a variety of books, including comics, novels, art books, and specialty books
  • Responsible for all aspects of editorial oversight on assigned titles, including line editing, art direction, and copywriting
  • Acquire and develop new writing and artistic talent
  • Serve as the point of creative contact to external partner editorial staffs
  • Work with lead editor and director of story development on publishing strategy, ideation and planning
  • Support larger franchise initiatives
  • Represent Blizzard Entertainment at industry conventions as needed

Experience:

  • Minimum 3 years of editorial experience working on high-profile published properties
  • Excellent organizational skills and a detail-oriented approach to problem-solving
  • Able to communicate effectively across multiple teams, with excellent written and oral communication skills
  • Able to creatively collaborate and facilitate creative environments for both colleagues and partnered talent
  • A strong desire to explore new directions in the ever-changing publishing landscape
  • Knowledge of story development from concept to the final product
  • Knowledge of publishing in a variety of media
  • Able to work well in a collaborative team environment and within an iterative development process
  • Strong storytelling skills and the ability to provide constructive criticism
  • Aware of trends and competition
  • Working knowledge of Blizzard Entertainment’s intellectual properties
  • A passion for story, art, and the future of the publishing industry

Pluses:

  • A passion for games, movies, graphic novels, and other elements of pop culture
  • Extensive understanding of one or more of Blizzard Entertainment’s intellectual properties
  • Extensive knowledge of Blizzard Entertainment’s published products, including novels, comics, art books, specialty books, manga, and online publications

Application Materials:

  • Resume (PDF Preferred)
  • Cover Letter which should include:
    • Why you are interested in working at Blizzard and position
    • What games you are currently playing

Primary Location: United States-CA-Irvine

Blizzard Entertainment is a global company committed to growing our employees along with the business. We offer generous benefits and perks with an eye on providing true work/life balance. We’ve worked hard to foster an intensely collaborative and creative environment, a diverse and inclusive employee culture, and training and opportunity for professional growth. Our people are everything. Our core values are real, and our mission has never changed. We are dedicated to creating the most epic entertainment experiences…ever. Join us!

We are an equal opportunity employer and value diversity at our company. We do not discriminate on the basis of race, religion, color, national origin, gender, sexual orientation, age, marital status, veteran status, or disability status.

'Blog History' 카테고리의 다른 글

개 발 일 지 042  (0) 2019.12.10
개 발 일 지 041  (0) 2019.12.10
개 발 일 지 039  (0) 2019.12.09
개 발 일 지 038  (0) 2019.12.09
개 발 일 지 037  (0) 2019.12.06

.zshrc
0.00MB

zshrc

 

have been attached.

 

 

!-- 텍스트 필드 선택시 화면 올리기.

- (void)textFieldDidBeginEditing:(UITextField *)textField {

    if (textField == self.userId) {
        [UIView beginAnimations:nil context:NULL];
        [UIView setAnimationDelegate:self];
        [UIView setAnimationDuration:0.5];
        [UIView setAnimationBeginsFromCurrentState:YES];
        self.view.frame = CGRectMake(self.view.frame.origin.x, (self.view.frame.origin.y - 100), self.view.frame.size.width, self.view.frame.size.height);
        [UIView commitAnimations];
        static_userpw_int = 0;
    }
    else if (textField == self.userPw) {
        [UIView beginAnimations:nil context:NULL];
        [UIView setAnimationDelegate:self];
        [UIView setAnimationDuration:0.5];
        [UIView setAnimationBeginsFromCurrentState:YES];
        self.view.frame = CGRectMake(self.view.frame.origin.x, (self.view.frame.origin.y - 100), self.view.frame.size.width, self.view.frame.size.height);
        [UIView commitAnimations];
        static_userpw_int = 1;
    }
}

- (void)textFieldDidEndEditing:(UITextField *)textField {
    if (textField == self.userId) {
        [UIView beginAnimations:nil context:NULL];
        [UIView setAnimationDelegate:self];
        [UIView setAnimationDuration:0.5];
        [UIView setAnimationBeginsFromCurrentState:YES];
        self.view.frame = CGRectMake(self.view.frame.origin.x, (self.view.frame.origin.y + 100), self.view.frame.size.width, self.view.frame.size.height);
        [UIView commitAnimations];
        static_userpw_int = 0;
    }
    else if (textField == self.userPw) {
        [UIView beginAnimations:nil context:NULL];
        [UIView setAnimationDelegate:self];
        [UIView setAnimationDuration:0.5];
        [UIView setAnimationBeginsFromCurrentState:YES];
        self.view.frame = CGRectMake(self.view.frame.origin.x, (self.view.frame.origin.y + 100), self.view.frame.size.width, self.view.frame.size.height);
        [UIView commitAnimations];
        static_userpw_int = 2;
        [textField resignFirstResponder];
    }
}

- (IBAction)textFieldDoneEditing: (id)sender {

if ([sender tag] == 0) {
}
else {
[sender resignFirstResponder];
}
}








!-- 카메라 diable한 경우 사용자는 화면 까매져도 잘 몰라서 넣는 코드.

#import <AVFoundation/AVFoundation.h>

Adding build phases -> Link binary with libraries -> AVFoundation.framework



AVAuthorizationStatus status = [AVCaptureDevice authorizationStatusForMediaType:AVMediaTypeVideo];

        switch (status){

            case AVAuthorizationStatusAuthorized:{

                    // 동의함

                };

                break;

            

            case AVAuthorizationStatusNotDetermined:{

                    // 정의 안됨 (동의전)

                    [AVCaptureDevice requestAccessForMediaType:AVMediaTypeVideo completionHandler:^(BOOL granted) {

                        if (granted) {

                            //Granted access to mediaType

                            dispatch_async (dispatch_get_main_queue (), ^{



                            });

                        }

                    }];

                };

                break;

            

            case AVAuthorizationStatusDenied:{

                    // 동의안함

                    UIAlertController * alert=   [UIAlertController

                                                  alertControllerWithTitle:@"카메라 접근 요청"

                                                  message:@"카메라 접근 권한이 허용되지 않았습니다.\n'확인' 버튼을 누르시면 접근권한 설정 화면으로 이동합니다."

                                                  preferredStyle:UIAlertControllerStyleAlert];

                

                    UIAlertAction *okAction = [UIAlertAction actionWithTitle:@"확인" style:UIAlertActionStyleDefault handler:^(UIAlertAction *action)

                                               {

                                                   [[UIApplication sharedApplication] openURL:[NSURL URLWithString:UIApplicationOpenSettingsURLString]

                                                                                      options:@{}

                                                                            completionHandler:nil];

                                               }];

                    UIAlertAction *cancelAction = [UIAlertAction actionWithTitle:@"취소" style:UIAlertActionStyleDefault handler:nil];

                

                    [alert addAction:okAction];

                    [alert addAction:cancelAction];

                

                    UIViewController *rootView = [[[[UIApplication sharedApplication] delegate] window] rootViewController];

                    while (rootView.presentedViewController) {

                        rootView = rootView.presentedViewController;

                    }

                    [rootView presentViewController:alert animated:YES completion:nil];

                

                }

                break;

            

            case AVAuthorizationStatusRestricted:{

                };

                break;

            

        }

'Blog History' 카테고리의 다른 글

개 발 일 지 041  (0) 2019.12.10
개 발 일 지 040  (0) 2019.12.10
개 발 일 지 038  (0) 2019.12.09
개 발 일 지 037  (0) 2019.12.06
개 발 일 지 036  (0) 2019.12.04

      UIAlertController *AlertView = [UIAlertController alertControllerWithTitle:@"popup" message:@"추가 저장 하시겠습니까?"    preferredStyle:UIAlertControllerStyleActionSheet];
                           
                           UIAlertAction *ok = [UIAlertAction actionWithTitle:@"예" style:UIAlertActionStyleDefault handler:^(UIAlertAction *action)
                                                {
                               
                               [self WTF];
                               
                               
                               [AlertView dismissViewControllerAnimated:YES completion:nil];
                           }];
                           
                           UIAlertAction *cancel = [UIAlertAction actionWithTitle:@"아니요" style:UIAlertActionStyleDefault handler:^(UIAlertAction *action)
                                                    {
                               [AlertView dismissViewControllerAnimated:YES completion:nil];
                           }];
                           
                           [AlertView addAction:ok];
                           [AlertView addAction:cancel];
                           [self presentViewController:AlertView animated:YES completion:nil];
                           

target does not implement selector


doBackgroundWork -> doBackgroundWork:

.h
NSConditionLock *theConditionLock;


.m


enum {
    kWorkTodo = 1,
    kNoWorkTodo = 0
};


theConditionLock = [[NSConditionLock alloc] initWithCondition: kNoWorkTodo];
   [theConditionLock unlockWithCondition:kWorkTodo]; // Wait until there is work to do
  [self startDoingWork];


- (void)doBackgroundWork:(id)arg {
    while (thread1) {
        NSLog(@"thread===`==========================================");
        [theConditionLock lockWhenCondition:kWorkTodo]; //스스로 멈춤.
    }    
}


- (void)startDoingWork {
    [NSThread detachNewThreadSelector:@selector(doBackgroundWork:) toTarget:self withObject:nil];
}


Variable is not assignable (missing __block type specifier)

    [theConditionLock lock];

    [theConditionLock unlockWithCondition:kWorkTodo]; //언락시 다시 돎. 언락 때마다 실행 가능.


'Blog History' 카테고리의 다른 글

개 발 일 지 040  (0) 2019.12.10
개 발 일 지 039  (0) 2019.12.09
개 발 일 지 037  (0) 2019.12.06
개 발 일 지 036  (0) 2019.12.04
개 발 일 지 035  (0) 2019.12.04

https://developer.apple.com/documentation/uikit/inter-process_communication/allowing_apps_and_websites_to_link_to_your_content/defining_a_custom_url_scheme_for_your_app

2019-12-04 17:38:52.732915+0900 AXRuntimeCommon] This class 'SwiftUI.AccessibilityNode' is not a known serializable element and returning it as an accessibility element may lead to crashes
onClickBTN
true
2019-12-04 17:38:54.007397+0900 Can't end BackgroundTask: no background task exists with identifier 2 (0x2), or it may have already been ended. Break in UIApplicationEndBackgroundTaskError() to debug.

엥? url 호출이 fork() 류 인가?
검색

https://stackoverflow.com/questions/23882495/cant-endbackgroundtask-no-background-task-exists-with-identifier-or-it-may-ha

얜 백그라운드 프로세스 관련...

https://zetal.tistory.com/entry/Cant-end-BackgroundTask-%EC%98%A4%EB%A5%98

iOS 13오류라는 카더라.

뭐지, ... 어떻던 간 해결해야 하는데 ㅠㅠㅠ

HI!
I can confirm that, for me have also same issue with  AVCaptureSession, the App is 10y+ old, but i think
doesen't matter how old, the AVCaptureSession is stopping.
"Can't end BackgroundTask: no background task exists with identifier 13 (0xd), or it may have already been ended. Break in UIApplicationEndBackgroundTaskError() to debug."

요것도 있고,
Same here with empty new project in iOS 13 GM with Xcode 11 GM on iPhone XS Max & on iOS 13.1 Beta 3 on iPhone XS.

 

Can't end BackgroundTask: no background task exists with identifier 2 (0x2), or it may have already been ended. Break in UIApplicationEndBackgroundTaskError() to debug.

이것도 있군...

일단 재부팅 각이다.

잘된다.

역시 복구 메커니즘은 업데이트 메커니즘과 더불어 가장 힘든 작업이겠지.

!-- 회사의 방향성.

하이브리드 버리고 네이티브로 가자고 말한지 2달. 모든 앱 통합하지 말고 앱 끼리 연결하자고 말한지 2달.
엔터프라이즈 배포 말고, 앱 스토어 배포로 가자고 말한지 2달 되었는데 다 그렇게 되고 있다.
설득할 때 현대/기아의 대기업 앱 배포 방식이 엔터프라이즈에서 앱 스토어로 바뀌었다고 말한 것도 설득력 있었지만,
카카오 같이 대형 앱 회사도 그렇게 간다고 한게 가장 설득력 있었다.
카카오 땡쓰. 내가 생각하는 방향성과 계속 맞아서 좋다.




'Blog History' 카테고리의 다른 글

개 발 일 지 039  (0) 2019.12.09
개 발 일 지 038  (0) 2019.12.09
개 발 일 지 036  (0) 2019.12.04
개 발 일 지 035  (0) 2019.12.04
개 발 일 지 034  (1) 2019.12.04

URL 호출  


//
//  ContentView.swift
//  URLcaller
//
//  Created by Junho HA on 2019/11/15.
//

import SwiftUI

struct ContentView: View {
    
    var body: some View {
        Button(action: {
            btnClick()
        }) {
             Text("Open anotherApp")
             }
    }
}

func btnClick() {
    print("onClickBTN")
    guard let s = URL(string : "yourappurl://") else {
        return }
    
    if UIApplication.shared.canOpenURL(s) {
        UIApplication.shared.open(s, options: [:]) { (b ) in
            print(b)
        }
    }
    
}

struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
        ContentView()
    }
}

'Blog History' 카테고리의 다른 글

개 발 일 지 038  (0) 2019.12.09
개 발 일 지 037  (0) 2019.12.06
개 발 일 지 035  (0) 2019.12.04
개 발 일 지 034  (1) 2019.12.04
개 발 일 지 033  (0) 2019.11.26

2016 나무위키 글인데 지금 글을 찾아 보면 보면 쓰레기들이 상당히 붙어서 작업을 했다는 것을 알 수 있다.

 

 

꼭, 지금 나무위키와 비교해 보길.

 

-- 지금 글 --

https://namu.wiki/w/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8

 

프로그래머 - 나무위키

국내에서는 보안 관리자, 보안 시스템 유지보수 전문가 등으로 부른다. 하지만 영어권에서는 개발자가 아니라 Operator라고 분명히 구분해준다. 국내에 이런 오퍼레이터 전문 육성 코스가 없어서 다들 프로그래밍을 하다가 이쪽으로 넘어오는데 전공 지식을 거의 활용할 수 없어서 기초부터 새로 배워야 하는 경우가 부지기수다. 오퍼레이터는 프로그래머의 하위 분류가 아니라 이웃 분류이다. 동등한 전문성을 갖추고 있는 반면 그 전문 영역이 별로 겹치지 않는다. 이들은

namu.wiki

 

-- 예전 글 --

 


• 랜덤(A)
• 특수문서
• 바뀐글(더)
• 편집(E)
• 역링크
프로그래머
• 직업 관련 정보, 컴퓨터 관련 정보, C
1. 개요
1.1. 거창한 알고리즘 연구자가 아니다
2. 최초의 프로그래머
3. 프로그래머의 종류(스펙트럼)
3.1. 일반 프로그래머
3.2. 융합형 프로그래머
3.3. 코더
4. 프로그래머가 되는 방법
4.1. 학위(대학 졸업장 등) 필요여부
4.2. 난 고수가 되고 싶어요
4.3. 필요한 능력
5. 이 속성을 가진 캐릭터
6. 유사 용어
1. 개요

 



▲ 유재석이 홍진호가 찬 명찰에 '프로그래머'라고 써 있는 것을 보고 제작진에게 한 질문. 제작진은 프로게이머와 프로그래머를 헷갈렸고 유재석은 프로그래머라는 직업을 몰랐다.
직업병 "한 포기" 하고 말하면 "타입이 일치하지 않습니다. 그램으로 넣어주세요." 라는 예외가 난다 인스타그램, 텔레그램, LG PC gram: 흠칫
프로그래머란 컴퓨터 프로그램을 만드는 사람이다. 전 세계적으로 유명한 프로그래머로는 존 카멕, 성공한 사람들 중엔 빌 게이츠 같은 사람이 있다. 이 나무위키도 프로그래머의 손 끝에서 탄생한 것이다. 무슨 주문을 외웠길래 이런 위키가 만들어졌는지 알고 싶고 지금 크롬으로 접속했다면 Ctrl+U를 눌러보자.(또는 F12도 된다).대강 무슨 주문을 외웠는지 엿볼 수 있을 것이다. 물론 관련 지식이 없다면 주문의 내용을 해석할 수는 없겠지만, 일단 주문의 모습은 볼 수 있을 것이다.
서양에서는 '프로그래머들 중엔 비만이 많다'는 편견이 있다고 한다. 하루종일 컴퓨터 앞에 앉아서 간식 처묵하는 이미지 때문인 듯하다.(...) 물론, 실제로 프로그래머들은 대부분 의자에 앉아 있는 시간이 많으므로 대개 운동이 부족한 것은 사실이다. 그러나, 실제 제대로된 프로그래머들 중에서는 비만이 거의 없는데, 왜냐하면 생각하느라 먹을 생각을 잘 안하기 때문이다. 쓸만한 프로그래머들은 내가 만드려는 프로그램에 대해 생각하는데 80%이상의 시간을 쓰고, 그걸 구현하는데는 20%의 시간도 안쓴다. 그리고 프로그래머들은 자신의 능력을 이용해 간혹 기발한 일을 벌이기도 하는데[1], 그게 나쁜 쪽으로 발현되는 것 중의 하나가 바로 크래킹이다. 같은 맥락에서 프로그래머는 보통 개인주의적 괴짜 집단 내지 틀에 박힌 것에 거부감을 지닌 이미지로 연상되기도 한다.
1.1. 거창한 알고리즘 연구자가 아니다
보통 수학이론을 이용하여 알고리즘에 대해 연구하는 사람과 프로그래머를 혼동하곤 하는데, 일반적인 프로그래머는 거창한 알고리즘 연구자가 아니다. 여러분이 생각하는 그 알고리즘 연구는 보통 대학원의 연구실이나, 대기업 연구소 등에서 이뤄진다. 그에 반해 일반적인 프로그래머들은 사실 조립공이라고 보는 것이 정확할 것이다. 알고리즘 자체에 대한 연구는 수학자나 전산학자(컴퓨터공학자)들이 하는 것이고, 그 연구 결과를 소수의 코어파트 프로그래머들이 가져다가 부품을 개발하며, 그 부품을 대다수의 일반 프로그래머들이 사용한다.
위 문단보다 더 와닿게 비유하자면 프로그래머는 건설업에서의 인부와 같다. 살짝 안습해 보일지 몰라도 사실이다. 초창기엔 머리만 좋으면 뭘 해낼수 있었지만 현재의 몇십만줄의 코드가 들어가는 프로그램은 폰 노이만이 와도 도저희 혼자서 만들수가 없다. 개인별 능률에 분명히 차이가 있지만 어차피 똑같은거 가지고 구현하는건데 시간의 차이가 있을뿐 결과물은 비슷하다(물론 발코딩은 예외다) . 위 사실은 프로그래머가 대체 가능 하다는걸 의미한다. 프로그래머가 희소성 있고 전문적인 직업이라고 생각했으면 상상이 깨질만한 부분.
하지만 세상에 일반적 프로그래머만 있는게 아니라서 전문적 프로그래머도 있다. 컴퓨터 분야를 깊이배워서 단순히 어플리케이션만이 아닌 운영체제같은곳(로우레벨)에 손대는 사람들이 그렇다. 이들은 보통 컴퓨터공학과에서 하드웨어까지 배운다. [2] 이사람들이 대학원에서 알고리즘을 배운다면 바로 그 거창한 알고리즘 연구자가 되는거고 기업에 취직해서 활용 한다면 전문적 프로그래머가 되는것이다.
프로그래머로 먹고살고싶다면 학원에서 조금 공부하고 취업할건지 대학에서 깊이 공부할건지 잘 생각해봐야한다.
2. 최초의 프로그래머
프로그래머는 대표적인 남초 직업이다. 그런데 의외로 최초의 프로그래머로 인정받는 사람은 바로 러브레이스 백작부인 에이다 킹(1815 ~ 1852)이다. 그녀는 찰스 배비지의 해석 기관 컴퓨터 상의 구현을 알고리즘으로 설명한 최초의 사람이기도 하다.
최초의 프로그래머가 여성이라는 사실에 놀란 사람들도 있을텐데, 프로그래밍 관련 서적들을 읽다보면 간혹 저자가 여성인 경우도 있다. 이후로도 초기의 프로그래머는 여성이 많은데, 컴퓨터에서 넘어온 사람이 많았기 때문.
3. 프로그래머의 종류(스펙트럼)
'프로그래머'라는 단어 하나로 간편하게 통칭하여 부르고 있긴 하지만, 사실 프로그래머에도 여러 종류(?)가 있다. 고급 언어와 툴을 다룰 줄 아는게 전부인 프로그래머부터, 저급 언어까지 다룰 줄 아는 프로그래머까지 그 스펙트럼은 어마어마하게 넓다. 또 소수의 코어파트 프로그래머들이 있는가 하면, 다수의 양산형 프로그래머인 코더가 있다.
컴퓨터 프로그래밍 기술에 능숙한 사람들은 유명세를 타기도 하지만, 이러한 관심을 받는 대상은 보통 소프트웨어 공학자 집단으로 국한된다. 그리고 종종 저명한 프로그래머들 중에는 "해커"라는 이름으로 불리는 사람들도 있다.
3.1. 일반 프로그래머
프로그래밍 언어, 알고리즘 등에 대한 전문 지식을 쌓고, 복잡하고 논리적이고 완성도 있는 프로그램을 개발하는 프로그래머들이 존재한다. 프로그래밍은 진입 장벽이 낮은 편이라 컴퓨터공학과 외에 거의 모든 공대에서 간단한 프로그래밍과 코딩 정도는 할 줄 알 정도라, 코더는 굉장히 많지만 알고리즘을 이해할 수 있는 프로그래머는 많지 않다. SW가 국가는 물론 세계의 핵심 분야가 될 것은 자명하므로 앞으로 정보 보안, OS, 네트워크 등 여러 방면에 있어서 이들의 역할은 더 커질 것으로 보인다.
3.2. 융합형 프로그래머
자신의 전문 지식을 바탕으로, 중급 수준의 프로그래밍을 익히고 직접 코딩을 하는 프로그래머들이 존재한다. 의사가 직접 의료 프로그램을 통계화, 수치화한다든가, 국과수 직원이 치아 감별을 통한 개인 식별을 위한 프로그래밍을 한다든가 하는 경우가 이에 속한다. 이들은 전문가 수준의 고급 코딩을 하지는 못하더라도, 자신이 원하는 프로그램을 짤 만한 코딩 능력은 갖추고 있으며, 무엇보다도 자신의 전공 분야에 대한 전문성이 탁월하기에 시너지 효과가 극대화된다. 마치 의사와 변호사가 합동으로 하는 것보다 의사 자격을 가진 변호사 한 명이 의료 소송 시장을 휩쓸고 있는 것처럼, 융합형 프로그래머는 자신의 전문성과 프로그래밍을 결합하여 그 분야의 전문가만이 떠올릴 수 있는 창의적인 아이디어를 바로 시장에 내보낼 수 있게 된다.
이들에게 요구되는 능력은 프로그래밍 능력이 아니라 자기 분야의 전문성이다. 전문성과 달리 프로그래밍은 극도로 완벽하고, 정교하고, 간결한 수준으로 잘 할 필요는 없다. 혹시 다소 불필요한 부분이 코드에 덕지덕지 붙어있다거나, 코딩하는 시간이 다소 오래 걸리거나 해도 크게 문제되지는 않는다. 이들에게 최우선으로 요구되는 사항은 전문성이고, 프로그래밍 능력은 그 다음이기 때문이다. 어차피 프로그램을 잘 짜서 성공하게 된다면, 그 다음부터는 프로그램 설계가 아닌 단순 코딩 정도는 양산형 프로그래머에게 맡겨도 된다.
3.3. 코더
기술의 발전으로 왠만한 프로그래머용 툴도 입문 난이도가 내려갔다. 이 덕분에 프로그래밍의 진입 장벽은 상당히 낮다. 그리고 기업이나 컴퓨터 학원 등지에서는 기초적인 코딩만 배운 프로그래머를 배출하였다. 이러한 프로그래머를 비하하는 용어로 "코더"가 있다. 원래 코더란 프로그램 코드를 볼 수 있고, 이에 따른 전반적인 테스트할 수 있는 사람을 의미하는 용어다. 그런데 지금 코더라는 용어는, 단순히 코딩만 할줄 알 뿐, 자기 프로그램을 개발할 능력은 없는 어설픈 프로그래머를 비하하는 의미로 변질되어 쓰이고 있는 상황이다.
코더와 프로그래머의 차이는 '알고리즘을 스스로 설계할 수 있는지'의 여부에 있다. 즉 주어진 문제를 해결하는 방법을 스스로 찾아내서 코딩할 수 있으면 프로그래머고, 아니면 코더다. 조금 더 구체적으로 말하자면, 소스 코드를 복사해서 붙이는 것 밖에 할 줄 모르는 사람은 코더이고[3] 소스 코드를 읽어서 그 작동 원리를 이해하고, 나아가 자신의 프로그램의 문맥에 맞게 튜닝해서 최적화할 수 있는 능력까지 갖춘 사람은 프로그래머다. 위에서 프로그래머는 거창한 알고리즘 연구자가 아니라고 하지 않았냐고? 거창한 알고리즘 연구자가 아닌 것 뿐이지, 일반적인(소소한) 알고리즘의 연구자는 맞다. 알고리즘이라는 단어 자체가 문제를 해결하는 방법 또는 절차를 의미한다. 자동차로 치면 코어파트 프로그래머가 튜닝 부품을 생산하는 업체라고 한다면, 프로그래머는 튜닝샵 직원, 코더는 서비스센터의 수습 정비사 정도 포지션정도에 해당한다.
프로그래머에게는 코드 리딩 능력도 중요하고, 자신에게 필요한 코드가 없을 때는 스스로 그것을 창조할 수 있는 능력도 있어야 한다. 즉 어떤 함수의 입력과 출력이 정의된 명세서가 주어지면 그 명세를 만족하는 코드(실제 컴파일 가능한 코드 또는 의사 코드)를 만들어낼 수 있는 사람이 프로그래머, 의사 코드(Pseudo code)가 주어졌을 때 그걸 실제로 동작하는 코드로 구현할 수 있는 사람은 코더라고 볼 수 있다. 다만 프로그래머가 의사 코드를 만들어서 코더한테 던져주는 프로세스는 요즘에 거의 사라졌다. 프로그래밍 언어가 많이 발전해서 현대의 프로그래밍 언어는 의사 코드에 매우 가깝다. 60년대에는 단순히 천공카드에 자료를 펀치하는 코더도 제대로 월급 받으면서 일할 수 있었지만 지금은 그런 저수준 작업이 필요없기 때문에 빨리 프로그래머로 전직(?)하는 게 좋다.
오늘날 플랫폼[4] 싸움이 커지면서 각자 자신들의 플랫폼 생태계를 성장시키기 위해 어플리케이션 만드는 과정을 점점 쉽게 만들어가는 추세이다보니, 과거에는 자신이 만든 프로그램의 몇몇 파트에 다른 라이브러리의 함수를 가져다 사용하는 수준이었다면, 요즘엔 아예 프로그램의 구조와 디자인 및 대부분의 뼈대가 되는 코드를 플랫폼에서 제공하는 프레임워크가 다 만들어 놓으면, 프로그래머는 거기에 부분부분 자신의 코드를 끼워 넣어 손만 보는 수준까지 왔다[5]. 자신의 영역에 대해 진입장벽이 점점 낮아지는 이런 상황에 대해 비판하는 프로그래머들도 많지만, 프로그래밍 자체는 그저 자신의 창의력을 발휘하기 위한 도구일 뿐이고, 도구가 쉬워졌다는것은 도구 자체에 신경 써야 하는 시간과 노력을 원래 목적에 할애할 수 있게 되었다는 것이기도 하기 때문에, 오히려 환영하는 프로그래머들도 많다.[6]
물론 고급 프로그래머도 사람이기 때문에 설계 미스를 내는 경우가 있다. 대표적인 경우가 Win32 애플리케이션 API. 왠지 null값을 파라메터에 자주 넘긴다고 생각했다면 착각이 아니다. 그리고 PHP라는 언어도 함수 이름에 일관성이 없어서 레퍼런스를 항상 참고해야 한다. 뭔가 프레임워크를 사용하는 방식이 어렵게 느껴지면 첫째는 본인 실력을 의심해야 하는 게 맞지만 둘째로는 그 프레임워크의 설계가 잘못돼있을 가능성도 고려하자. 프레임워크를 바꿨더니 안 되던 일이 일사천리로 진행되는 경우도 간혹 있다. 대형 프레임워크일수록 이런 설계 결함이 발생할 확률이 높아지기 때문에 몇몇 프로그래머는 '마이크로 프레임워크' 쪽으로 전향하기도 한다.
고급 프로그래머 중에서도 전체 프레임워크 기본 틀을 설계하는 최상급 프로그래머들은 소프트웨어 아키텍트 라고도 불린다.
4. 프로그래머가 되는 방법
프로그래머가 되고 싶다면, (한국의 컴퓨터공학 커리큘럼상에서는 C나 Java부터 가르치는데 이거 생까고)[7] 미국에서 입문과정으로 가르치는 Python부터 시작하는 것을 추천한다. 미국에서 괜히 파이썬을 입문용으로 가르치는 게 아니다. 그나저나 파이썬 강의는 도처에 널렸으므로 적당한 것 하나 골라잡고, 따라하다보면 일단 코더 타이틀은 획득할 수 있다. 사실 미국에서 진짜 입문용으로 가르치는 것은 스크래치라는 언어인데, 이거는 자료가 너무 없기 때문에 추천하기 어렵다. 그리고 스크래치 언어의 설계 목적은 철저히 교육용이다. 실용적인 프로그램을 이걸로 만들겠다는 건 레고 블럭으로 진짜 사람이 들어가 살 집을 지어보겠다는 것과 마찬가지다. 80~90년생 프로그래머는 BASIC부터 시작했을 가능성이 높은데, 21세기의 Basic이라고 할 만한 것이 바로 Python이다. 베이직과 달리 파이썬은 매우 고성능이기 때문에 입문 이후에도 주력으로 사용할 수 있는 특징이 있다. 참고로 위에서 C와 Java를 생까도 된다고 했는데 그 이유를 설명하자면, C언어는 원래 태생이 기계 제어 언어, 다시 말해 OS (운영체제)를 만들기 위해 개발된 언어이기 때문에 배우려는 사람이 이미 컴퓨터 아키텍처에 대해서는 잘 알고 있다고 가정하고 들어가기 때문이다. 그리고 자바는 아무래도 타이핑해야 할 양이 너무 많아서 오타 교정하다가 힘 다 빠진다.
Python이 본인 스타일과 안 맞으면 Ruby로 시작해도 좋다. C언어로 언젠간 전향해야 하는 사람이라면 Go언어가 좋다. 두 언어가 성질이 매우 비슷하기 때문이다. 하지만 C++은 절대 시작 언어로 선택해선 안 된다! 학교에서 1학년 객체 지향 프로그래밍 과목으로 C++을 강요해서 어쩔 수 없이 배우는 경우가 많지만 C++언어는 현대에 쓰이는 수많은 프로그래밍 언어 중 코딩 난이도가 최상위권에 있다. 어셈블리어와 자웅을 겨룰 정도. 동의를 못 하겠다면 C++의 iostream 헤더 파일을 열어봐라. 코드를 암호화해놓은 것 같겠지만 그거 분명히 C++코드다. 그 다음에 Go언어 컴파일러 소스 코드를 열어보면 코딩 난이도의 차이가 확 느껴질 것이다. 세상에서 가장 복잡한 프로그램이라는 컴파일러의 Go 언어 버전하고, 그냥 단순히 데이터 입출력만을 처리하는 iostream 헤더 코드(소스 코드도 아니고 그냥 선언문)의 C++ 언어 버전의 코드 가독성 차이는 넘사벽이라는 말로도 표현을 못 할 정도로 크다.
파이썬을 어느 정도 익히고 대강 구구클래스 구구단 프로그램 정도는 스스로 만들 줄 알게 됐으면 이제 컴퓨터공학 기초를 닦기 시작한다. 바로 자료구조와 알고리즘을 공부하란 소리다. 컴퓨터공학 대학교 과정 1학년때 가르치는 그 과목 맞다. 자료구조와 알고리즘을 제대로 공부하지 못하면 평생 양산형 개발자(코더)로 남을 수밖에 없다. 그런데 사실 자료구조와 알고리즘을 마스터 하게 된다면 프로그래머의 최정점에 서게 되는 셈이므로, 마스터할때까지 공부하려고 할 것 까지는 없고, 기본적인 정렬 알고리즘이나 탐색 알고리즘, 다익스트라 알고리즘 등 대학 1학년 과정의 기초 알고리즘까지 익히고, 다음 단계로 넘어가도 된다.
다음으로 이제 자신이 어떤 분야에서 활동하고 싶은가에 따라서, 사용할 언어를 선택해서 공부하면 된다.. 웹 프로그래머라면 보통 자바스크립트를 주력으로 삼게 될 테고, 시스템 프로그래머라면 보통 C++언어를 주력으로 삼게 될 것이다. 각 분야마다 선호가 되는 언어는 각각 다르다. 해당 언어와 함께 구글검색을 연습하면 좋다. 정말 어지간한 질문은 구글에 검색하면 답이 다 나오기 때문이다. 그냥 에러메시지를 긁어다 구글 검색창에 붙여넣기만 해도 스택오버플로우 사이트에 해법 올라온 걸 검색할 수 있다.[8] 한편 네이버의 경우에는 안타깝게도 구글과 달리 반대로 어지간한 질문에도 의미없는 답변만 줄줄 달려 있는 것을 확인할 수 있을 것이다. 이제부터 영어를 열심히 공부해야 한다. 하지만 생활영어가 아니라 공학영어이므로 토익 점수하고는 별 관계가 없고, 그냥 소스코드를 읽을 수 있는 정도의 영어실력이면 충분하다. 사실 공학영어만 필요하면 따로 영어학원에 등록해서 수강할 필요까지는 없고 그냥 영어사전만 끼고 있어도 충분하다. 즉 영어때문에 걱정할 일은 아니라는 말씀!
프로그램 언어는 프로그래머의 도구일 뿐이지만, 각 언어마다 장단점이 있고[9], 시장의 수요에 따라 특정 언어를 할줄알면 몸값이 올라가는 경우[10]가 있기 때문에 다양한 언어를 다룰 줄 아는 것이 여러가지로 좋고 또 중요하다.
어느 정도 실전에 사용할 만한 코드를 짤 수 있게 되었다면, 이제부터는 슬슬 고급 기술을 연마할 차례다. 각 언어마다 디자인 패턴이라는 일종의 설계 지침서가 있는데, 이런 패턴들을 학습하고 전문용어를 익혀 고급 개발자와의 커뮤니케이션(쉽게 말해 의사소통)이 원활해지도록 노력해야 한다. 틈나는 대로 다른 언어들도 공부하는 것이 좋다. 달랑 한 두개의 언어만 붙잡고 있으면, 그리고 그 외의 언어에 대한 지식습득을 외면한다면 어느 순간 도태될 수도 있다. 현실의 외국어와 달리 프로그래밍 언어는 문법이나 용어들이 다 비슷비슷하므로 습득하는데 큰 노력이 들지 않는다. 다른 언어들까지 잘 사용할 능력을 갖출 필요까지는 없고, 그냥 간단한 프로그램 만들 정도만 익히면 충분하다. 나중에 그 언어를 주력으로 사용하게 될 때, 나머지 상세한 부분을 공부해도 늦지 않다.
디자인 패턴까지 공부했는가? 그러면 축하한다. 당신은 이미 프로그래머다. 이제 GitHub라는 프로그래머의 성지로 성지순례를 떠나자. 거기서 깨달음을 얻고 자신의 나아갈 길을 발견할 수 있을 것이다.
여기까지 왔는가? 그럼 이제부터 여러분은 스스로 나아갈 수 있을 것이다. 참고로 리눅스를 가까이하고 윈도우를 멀리하면 프로그래머로서의 삶이 좀 더 편해진다. 근데 단점으로 일상생활이 몹시 불편해지기 때문에 아니야 코딩덕후는 리눅스가 더 편하다구프로그래머가 되고자 한다면 그냥 컴퓨터 두 대를 사서 각각 윈도우와 리눅스를 깔아놓는 걸 추천한다. 버츄얼박스 같은 가상화는 추천하지 않는다. 리눅스 호스트에 윈도우를 버츄얼로 띄우면 게임 따윈 꿈도 꿀 수 없고 윈도우 호스트에 리눅스를 버츄얼로 띄우면 하드웨어 접근 제한 때문에 엄한 데서 삽질을 할 수 있다. 물론 초보 프로그래머가 하드웨어를 컨트롤할 일은 거의 없으니 윈도우 호스트에 리눅스 버츄얼 정도는 중급 프로그래머가 되기 전까지는 괜찮다. 듀얼부팅? 하지마라. 장담하건데 듀얼부팅 환경을 꾸며놓으면 얼마 안가서 리눅스는 절대 안 쓰고 윈도우만 쓰게 된다. 물론 윈도우 환경에서 사용할 수 있는 끝판왕급 개발 도구인 비주얼 스튜디오라는 게 있긴 하다. 그럼에도 불구하고 리눅스를 추천하는 이유는 리눅스쪽이 CLI환경 기준이라 답변 달리는 게 커맨드 명령 같은 간단한 거라 답변의 양에서 압도적이기 때문. 게임 프로그래머가 되고 싶은 사람도 주력 개발은 윈도우에서 할지언정 일단 리눅스 환경은 경험해보는 게 좋다. 편리한 줄 모르면 불편한 줄도 모른다.
컴퓨터 두 대 사는 게 아무래도 부담이 되면, 리눅스용 컴퓨터는 본체만 어디 재활용센터나 중고시장 같은데서 주워오고, 거기에 서버용 리눅스를 깐 뒤에 SSH(PuTTY등)로 원격 접속해서 사용하는 방법을 추천한다. 10만원 정도면 PC방에서 배출되는 중고컴 정도는 구입할 수 있다. 운 좋으면 아파트 쓰레기장에서 공짜로 주워올 수도 있다. 전기료는 하루종일 켜놓는 게 아닌 한에야 별로 차이 안 난다. 리눅스컴도 전기먹을만한 작업을 안 하고 윈도우컴도 전기먹을만한 작업을 안 하니까. 게임 하나 돌리고 있는 컴퓨터가 저거 두 대분보다 더 많은 전기를 소모한다.
아예 공짜를 원하나? 좋은 방법이 있다. 아마존 웹 서비스를 사용하는 것이다. EC2인스턴스의 t2.micro 인스턴스는 가입 후 1년간 무료로 사용할 수 있다. 1년 지나면 계정을 지우고 다른 신용카드를 붙이는 방법으로 계속 사용할 수도 있다.[11] micro인스턴스라도 어지간한 프로그램은 충분히 컴파일할 수 있다. 심지어 웹 서버에 데이터베이스 서버를 덕지덕지 붙여도 혼자 쓸 목적으로는 충분한 성능을 낸다. 돈 내고 쓰겠다고 해도 예약인스턴스를 구매하면 t2.nano급(가장 싼 인스턴스)의 1년 자유이용권(All upfront) 가격이 40달러 선이다.
본인이 덜렁이 기질이 있거나 보안의 '보'자도 모르는 생초보라면 아마존 웹 서비스는 사용해서는 안된다. 위의 각주에도 언급돼있지만 앗 하는 사이에 돈십만원 빠져나가는 건 우습다. 이건 후불요금이기 때문에 환불도 안 된다. 보안을 철저히 챙길 자신이 없다면 클라우드 컴퓨팅에는 손대지 말자.
그리고 중수 이상의 프로그래머라면 가급적 초고해상도 모니터와 좋은 키보드를 갖추는 것이 권장된다. 왜냐하면 하나의 화면에 몇 줄의 코드가 보여지는지가 생산성에 많은 영향을 미치기 때문이다. 그리고 모니터에 뚫어지게 쳐다보는 특성상 시력이 안좋아지다보니 폰트는 가급적으로 키우는데 모니터 사이즈가 받쳐줘야 하기 때문. 키보드를 쳐야 하는 일이 아주 많으니 기계식 키보드와 같은 고급품을 구입해서 쓰는 것이 좋다. 전문가에겐 전문적인 장비가 필요한 법이다. 대신 그래픽 카드나 CPU같은 건 좀 하급이어도 큰 문제가 되지 않는다. 개발할 때 본체 쪽 스펙은 좀 떨어져도 상관없다. 고급 프로그래머가 되면 빌드 머신을 따로 구성할 정도로 전문적으로 작업하게 되겠지만, 이미 거기까지 도달한 프로그래머는 자신에게 필요한 환경이 무엇인지 잘 알고 있을 것이다.
4.1. 학위(대학 졸업장 등) 필요여부
흔히 프로그래머에게는 학력이 중요하지 않다고, 심지어 대학 교육이 반드시 요구되는 분야가 아니라고들 말을 한다. 사실 결코 틀린 말은 아니다. 고가의 실험실습 도구가 필요한 다른 분야와는 다르게 프로그래머에게는 오직 달랑 컴퓨터 한 대만 있으면 충분하고, 필요한 관련 지식에 대한 정보는 인터넷의 정보 바다에 흘러 넘치기 때문이다. 게을러서, 즉 자기가 안 찾아봐서 관련 지식 및 정보를 모르는 경우는 있어도, 찾을 수가 없어서 관련 지식 및 정보를 모르는 경우는 극히 드물다고 할 수 있다. 또한 수준 높은 프로그래머를 희망하는 것이 아닌이상, 즉 양산형 프로그래머(코더) 정도가 되기를 원하는 이상 대학 외의 사교육기관, 즉 학원에서도 얼마든지 관련 공부를 할 수 있다. 심지어 마음만 먹으면 혼자서도 공부해서 될 수 있는 것이 프로그래머이다. 그러나, 학위가 필요하지 않다는 말이, 즉 대학 졸업장이나 대학교육이 반드시 필요한 것이 아니라는 말이 실력이 중요하지 않은 직업이라는 이야기는 아니다. 말인 즉슨 학력 = 실력이 아니다일 뿐이다.
사실 대학에서 배우는 내용들은 추상적인 것들이 많아서[12] 나중에 일선 필드 현장, 즉 직업전선으로 뛰어들었을 때 거기서 하게 되는 프로그래밍과 아예 직접적 관련이 없는 내용들도 많이 있고, 관련이 있는 내용이라고 하더라도 그것들을 필드에서 실전에 녹이는 것은 힘든 경우가 꽤 많다. 사실 대학에서 일반적인 기업의 일반적인 코딩실무에 필요한 능력만 추려서 가르친다면, 그 분량 및 학업에 필요한 시간은 그다지 많지가 않다. 그렇기때문에, 사실 정말 고급지식을 필요로 하는 분야[13]가 아닐 경우에는 대학이 오히려 시간낭비가 될 수도 있다.
그러나 고급 소프트웨어 엔지니어가 되기 위해서는 말이 조금 달라진다. 일단 고급 엔지니어가 되기 위해서 대학 졸업장이 반드시 필요한 것은 아니다. 여전히 졸업장보다 지식이 중요한 것은 마찬가지. 그러나 아이러니하게도 이 경우 좋은 대학이 매우 중요하다. 고급 지식을 배울 수 있는 곳이 좋은 대학 뿐이기 때문.
널리 알려진 사실이지만 한국의 컴퓨터공학/소프트웨어과는 구조적인 문제로 커리큘럼이 낙후되어 있다. 컴퓨터공학과를 진학하게 되는 이유가 이론적 배경을 위해서임을 고려하면 이는 졸업자의 경쟁력에 심각한 마이너스 요소가 된다. 말할 것도 없지만, 미국의 스탠포드나 MIT와 비교했을 때 한국 대학의 커리큘럼을 모두 성실히 따라간다고 해도 기대되는 아웃풋은 처참할 지경. [14] 그나마 세계 랭킹 50위권인 서울대학교나 KAIST에서나 미국의 제대로 된 탄탄한 커리큘럼에 그렇게 많이 꿇리지 않는 교육을 받을 수 있다. 문제는 이 지식이 없으면 고급 엔지니어가 되는데 엄청나게 큰 지장이 있다는 것이다. 이런 지식[15] 은 단순 코더로서 실무 경험을 쌓는다고 해서 배울 수 있는 것도 아니며, [16] 사이버대학 등의 접근성이 높은 대학교에서 깊이있게 배울 수도 없으며 Coursera 등에서도 이런 고급 강좌는 거의 제공해주지 않는다.
대학원 또한 마찬가지. 애초에 중요한 건 대학원을 나왔느냐가 아니라 어떤 대학원에서 어떤 수준의 교육을 받고 어떤 퀄리티의 논문을 냈느냐라는 것을 상기하자. [17] 현실적으로 낙후된 대학 환경에서 그나마 제대로 된 실력을 쌓을 수 있는 대학은 한국에 두세개 뿐이고, 이런 대학원은 들어가기가 상당히 어렵다. [18] 결국 현실적인 문제로 고급 엔지니어가 되고자 한다면 실력이 중요한 IT 분야에서도 굉장히 좋은 교육을 받아야 하기 때문에 좋은 대학을 가는 것은 거의 필수적이다. [19] 만약 자신이 외국 대기업 진출을 노리는 등 고급 엔지니어만이 할 수 있는 일을 하고 싶다면 일단 좋은 대학을 가고 보는 것[20]을 강력하게 추천한다. 인맥, 다양한 기회 등은 덤.
대기업에 입사하고자 할때는 대학 졸업장이 당연히 필요하고[21], 괜찮은 중견기업에 지원할 때도 필요하다[22]. 설사 SI이나 SM 업무를 하더라도 "갑"에서는 개발자의 학력이나 학벌을 중요시 여기기도 한다. 그리고 대학교 졸업장 없이는 실력이 뛰어나더라도 상대적으로 설계 경험을 접해보기 힘든 경향이 있다. 사실 학력과 실력은 반드시 일치하는 것도 아니고, 이 분야 특성상 학력과 실력이 무관한 경우도 매우 많지만, 이 분야 특성을 잘 모르는 일반인들로서는 사회 통념상 학력이 없으면, '저 사람은 대학도 나오지 않았는데, 당연히 실력도 없을 거야~' 라는 식으로 선입견 내지 편견을 가지기 쉽다. 그래서 그러한 편견을 가진 일반인이 발주를 하는 갑의 위치에 있다면, 실력을 보지도 않고 쉽게 무시하기 일쑤이다. 하여간 한국에서 사회생활 하려면 대학은 나와야 한다 미국도 프로그래머로 취업하려면 보통 대학을 졸업해야 하고, 구글 오라클 등의 대기업에 취업하려면 좋은 학교 출신이 아무래도 유리하다.
아랫 글(4.3.필요한 능력)을 보면 알겠지만, 그 획기적인 알고리즘을 만들어낸다는 교수들이 바로 박사들이다. 또, 알게 모르게 석사학위도 꽤 쳐준다. 구글 검색엔진에 사용된 알고리즘을 고안해낸 래리 페이지가 바로 석사다[즉, 단순히 시간/공간적 절약만 알고리즘의 개선목표가 아니다]. 더붙여, 좋은 지도교수님 밑에서 잘 트레이닝 된 석사가 건성으로 졸업한 박사보다 나을 때도 많다. 끝으로, 교수가 코딩 안하는 이유는 어느정도 급만 되면 코딩할 필요가 없는 것도 있는 한편, 박사과정 학생들이 가져다 주는 획기적인 알고리즘이 타당한지 검증하고 논문 검토하는 데도 바쁘기 때문이기도 하다. 그 와중에 애들도 가르치고, 연구도 따와야 하고, 학내 정치도 해야 되지 않는가.
결론은 대학원 안갈거면 혼자 해도 된다. 그리고, 학산데 박사급으로 머리가 돌아가는 프로그래머도 정말 간혹이긴 하지만 있긴 하다. 획기적인 알고리즘도 만들어 내고 그걸 최적화된 코드로 옮기면서, 설계도 정말 잘된 프로그램을 만드는 그야말로 슈퍼프로그래머 랄까? 예를 들어 리누즈 토발즈는 학부 졸업하기도 전에 이미 운영체제를 개발했다. 그럼에도 불구하고 석사학위를 받았다는건 덤이다.
4.2. 난 고수가 되고 싶어요
위에서 설명한 GitHub만 잘 돌아다니면서 쓸만한 정보들을 캐치하고, "stackoverflow"사이트만 잘 이용하더라도 혼자 힘으로도 고수가 될 수 있다. 그렇지만 독학 학습 과정에서 일종의 종교적 신념(?) 같은 것들이 생겨나, 중수에 머무르는 프로그래머도 상당히 많다. 예를 들어 C++ 언어가 만능 언어라는 신념 등. 만능 언어가 맞긴 맞는데 만능기판과 PCB의 차이와 같은 것이다. 만능기판이 만능이긴 하지. 그런데 왜 사람들은 PCB를 굳이 제조해서 쓸까? 한 번 잘 생각해보기 바란다. 이러한 자신만의 독단적 신념에 빠져드는 것을 방지하고 예방하기 위해서는 전 세계 개발자의 트렌드를 예의주시하고 있어야 한다. 물론, 트렌드를 지속적으로 팔로우하는 건 어렵다. 연예인들이 트렌드를 팔로우하는 어려움 만큼이나 어렵다. 라이브러리나 프레임워크를 뺀 순수 '언어'들만 해도 200여 종이 넘는다. 요즘에 안 쓰는 언어들은 제외한다고 해도 대략 50여 종의 언어가 남는데, 그 중에서 다음 프로젝트에 무슨 언어가 쓰일 지는 확정지을 수 없다.[23] '나는 게임 개발자니까 다음에도 당연히 C++이겠지?' 했다가 갑자기 파이썬 스크립트 뭉치가 툭 던져질 수도 있는 동네가 이 동네다. 당장 아이폰 앱 쪽을 봐라. '오브젝티브-C만으로도 충분하겠지?' 했는데, 어느날 갑자기 애플에서 Swift를 발표하지 않았는가...
그러므로 진정 고수가 되고 싶다면 한 언어만을 맹신하지 말고 다른 언어를 접해보자. 대표적으로 Go언어는 C언어가 할 수 있는 일은 죄다 할 수 있으면서도, 컴파일이 빠르고 코딩은 쉽다.[24] Python은 C보다 할 수 있는 일들이 적지만, 워낙 쓰기 편한 까닭에 주류 언어의 지위를 차지하고 있다. Erlang이란 언어는 원래 통신장비에 들어갈 목적으로 설계된 언어인 탓에 동시접속자가 폭주해도 굳건히 버텨낸다.[25]
한번 예를 들어보자. Java라는 한 우물만 계속해서 파게 될 경우, 처음엔 날코딩에서 시작해 IDE를 쓰게 되고, 써드파티 라이브러리를 사용하다가 스프링 프레임워크라는 것이 있다는 걸 알게 되고, 프레임워크의 유연성에 감동의 눈물을 흘리다가, 그 프레임워크를 만든 근간 기술인 디자인 패턴에 대해 공부하게 되고... 그렇게 차츰 자기도 모르게 고급 프로그래머가 되어 간다. 그렇다. 이렇게 한 우물만 파더라도 고연봉을 받을 수는 있다. 왜냐하면 아직도 자바는 프로그래밍 언어 인기순위 2이기 때문이다.[26] 하지만 그놈의 학습량이 문제다. 위에서 트렌드를 지속적으로 팔로우해야 한다고 했는데, 자바 쪽의 트렌드는 따라가려면 읽을 양이 엄청나게 많다. 그래서 다른 것에 한눈 팔 여유가 없다. 그런데 현재 자바 언어는 입지가 상당히 위험한 상태다. 구글과 오라클 간에 소송도 걸려 있고, 다른 경쟁 언어들이 더 강력하고 편리한 신기술로 무장하고 있는데다가, 언어 스펙의 발전이 오랜 기간 정체해 있었다. 코볼언어가 그랬듯 금융권이라는 보수적인 곳에서 자바를 쓰기 때문에 하루 아침에 몰락하고 그러진 않겠지만 일자리 자체가 줄어들어 취업문이 좁아지는 건 어쩔 수 없다. 그런데 최신 트렌드에 민감하게 반응하고 있었다면, 스프링 프레임워크를 접할 때 즈음엔 함수형 언어라는 게 있다는 사실을 어떻게든 주워들을 확률이 높다. "내 사랑 자바를 왜 까고 그래요?" 하고 대들면 뭔 일급 객체니, 클로저니... 하면서 사람을 열받게 하는데 당장 자리로 돌아가서 구글신에게 물어보면 뭔가 심상치 않은 분위기를 느낄 것이다. 그리고 10분 뒤, 당신은 멘붕을 경험할 것이다. "인터페이스가 불필요하다니!" 거기서 끝나지 않는다. 메서드 체이닝과 고차 함수 개념을 접하고 나면 객체를 상속하듯이 행동을 확장할 수 있는 함수형 언어의 설계 패러다임을 접하고 문화충격과 더불어 뇌 개조를 당하게 된다. 객체지향이 세상의 진리인 줄 믿었건만 또 다른 세계가 존재했던 것. 그리고 멀티스레드는 금단의 사과 같은 테크닉이라고 믿었던 자신에게 스레드가 다다익선이라고 가르치는 GPGPU세계도 잠시 스쳐지나갈 수 있다. 리턴값을 두 개 세 개 막 넘길 수 있는 Python과 Go를 보고, 숫자에 메소드를 붙이고 문자열 자체를 메소드명으로 해석해서 실행시키는 괴랄한 테크닉이 가능한 Ruby를 보고[27], 심지어 같은 자바가상머신을 사용하는데도 유연성이 훨씬 뛰어난 Scala와 Groovy를 접해보게 된다. 그런 세계여행(?)을 하고 돌아와서도 순수주의자처럼 자바 하나만으로 코딩하고 싶지는 않을 것이다. 심지어 남들이 헷갈리니까 언어는 하나로 통일하라고 말해도 싫을 것이다.
저 과정 전체에 대한 퀵 투어를 원하는가? 프로그래밍 언어/코드 예제항목에 가 보자. "Hello, World!"는 그렇다치고 그 아래쪽 것들을 구경해볼것. 열 줄짜리 구구단 출력 자바 코드가 Ruby언어에 가면 어디까지 줄어드는지 한 번 보자.
위에서 자바를 너무 심하게 깠는데, 사실 C++프로그래머가 자바 세계로 넘어와도 비슷한 문화충격을 받을 수 있다. '아니 왜 포인터가 없지? 그러고도 프로그램이 돌아가나?', 'new는 있고 delete가 없다니, 코딩 개판이네', '연산자 오버로딩이 안돼? 다중상속도 안돼? 성능도 느리다고? 머신제어도 불가능? 장난감이구만...' 하고 있다가 크게 데이는 경우도 더러 있다. 또는 웹 개발자이긴 한데 IoT 디바이스 분야라서 PHP를 아두이노와 통신시키려고 별의 별 모듈을 덕지덕지 붙이다가 그냥 C언어를 이용하여 함수 호출 한 개로 끝내버리게 되는는 신나게 빡도는 경험도 할 수 있다. 하지만 다른 분야를 안 보고 있었다면, 일하는 내내 빡쳐있겠지 인과응보다. 뭐 그러다 최정점에 서게 되면 이거고 저거고 다 비슷해 보이게 된다는 언어의 한계를 돌파해 버리기 때문에(...) 무슨 언어를 쓰든 거기서 거기처럼 느껴질 수도 있겠지만 이 경지까지 가면 스스로 컴파일러를 제작해서 사용할 정도의 초월자가 되어있을 것이라 논외.(...)
4.3. 필요한 능력

야근력
코더든 아니든 간에 일단 프로그래머라고 자부하려면, 최소한 (아주 기초적인 수준이더라도) 여러가지 프로그래밍 언어를 구사할줄 알아야 하며, 직종에 따라 다양한 툴과 엔진을 다룰 줄 알아야 한다. 한편 직접 툴을 다루진 않지만 데이터베이스, 알고리즘, 자료 구조간의 관계/구조를 설계하는 사람을 소프트웨어 설계자(아키텍트)라고 구분하여 부르기도 하는데, 아키텍트는 당연히 관련 분야 지식을 알아야 한다. 아무튼 직종에 따라 차이가 있다곤 해도, 뛰어난 프로그래머가 되기 위해 배워야 할 것은 일일이 설명하기 어려울 정도로 무척이나 많다. 그 중에는 프로그래밍 자체에 대한 흥미 및 이 분야의 트렌드를 지속적으로 팔로우하는 능력 및 꾸준한 공부습관도 포함되어 있는데, 이에 대해 부연설명하면 다음과 같다.
내가 하면 프로그래머요, 남이 하면 코더[28]라고 부르기도 할 정도로, 진입장벽이 낮아졌지만, 진입장벽이 낮다고 해서 결코 '쉬운' 직업[29]은 아니다. 툴은 점점 쉬워지고 있지만 그런 툴 자체가 워낙 많이 쏟아지고 있어서 프로그래머는 그 수많은 툴 중에 '선택'을 해야 한다. 라이브러리간 궁합도 따져봐야 되고 개발이 계속 되고 있는지, 얼마나 많은 유저가 쓰고 있는지, 그리고 검증되었는지 여부 등을 다 따져봐야 하게 된 것이다 (그리고 마지막엔 GPL때문에 리젝되겠지...). 1970년대에는 닥치고 C언어를 쓸 수 있었겠지만, 2015년 현재 그렇게 생각없이 도구를 골랐다간 망하기 일쑤다. 고민을 하는 동안에도 세계 어딘가에서는 새로운 툴이 만들어져 발표되고 있고 기존 툴이 대대적인 업그레이드를 해서 원래 후보 탈락이었는데 재검토가 불가피해지는 경우도 발생한다. 정말 안습인 건 1년동안 고생해서 프로그램 하나를 제작했는데 다른 회사에서 신기술을 도입한 더 좋은 프로그램을 일주일만에 출시해버리는 경우도 발생한다. 툴 선택이 잘못돼서 생산성이 떨어진 상태로 작업하는 게 어떤 참사를 불러오는지의 가장 극단적인 사례.
그래서 타 분야에 비해 꾸준히 관련 분야 지식을 공부해야 하는 자세가 요구된다. IT쪽 뉴스에 뭐가 뜨면 최소한 자기 분야는 죄다 챙겨봐야 하니까 말이다. 덕분에 학원출신이라도 이후 독학으로 대학출신을 능가하는것도 가능하며, 대학에서 우수하였더라도 졸업 이후에 자기 분야 지식에 대한 체크를 게을리 한다면, 양산형 프로그래머 수준으로 떨어지는것도 매우 쉽다. 특히나 IT 분야는 발전속도가 매우 빠른 분야이기때문에 공부를 그만두면 순식간에 뒤쳐질수 밖에 없다. 따라서 프로그래머라는 직업을 그만두는 때까지 공부를 게을리 해서는 안된다. 그러므로 어떻게 보면 사실 프로그래머에게 필요한 가장 중요한 적성은 뜬구름 같은 얘기이기도 하지만, 프로그래밍 그 자체에 대한 흥미라고 할 수 있다. 흥미가 있는 사람이라면 누가 시키지 않아도 직접 찾아서 새로운 기술과 관련 정보를 습득할테고, 누가 강요하지 않아도 알아서 공부할 것이기 때문이다. 그와 달리 학교에서처럼 시험같은 것으로 강요하는 사람이 없을 경우 스스로 공부를 하지 않는 케이스라면, 학교를 졸업하고 난 이후에는 공부에 소홀 할수 밖에 없을 것이고, 그렇게 되면 다른 사람들에 비해 실력이 뒤쳐질 수 밖에 없을 것이다.
대부분의 대학교 컴퓨공학과 교수들이 본인은 절대 코딩 안 하는 이유가 다른 게 아니라 이 트렌드를 못 따라가서다. 연구분야가 툴 그자체에 있는 게 아닌 한에야 교수들이 툴에 관심가져야 할 이유도 없고. 다른 분야 교수들(기계과 등)이 대학원생과 일대일 맞다이를 떠도 꿇릴 게 없는 반면 컴공과 교수들이 프로젝트 하나를 추진하려면 대학원생이 반드시 몇 명씩 필요한 이유도 이것 때문이다. 물론 코딩덕후출신 교수들도 있긴 한데 전체적인 모양새가 그렇다는 것이다. 컴공과 교수들이 무능하다는 얘기가 아니다. 이들이 이 문서 맨 위에 서술한 바로 그 거창한 알고리즘 연구가들이다. 일반 프로그래머들이 코드 실행 속도를 0.1초, 0.001초를 줄이는 데 진땀빼는 동안 이들 교수들은 그 시간을 절반, 10분의 1하는 식으로 뭉텅이로 줄여버리는 연구를 한다. 공학자라기보다는 수학자에 가깝고 그래서 실세계의 프로그래밍 언어보단 의사 코드를 더 자주 사용한다.
구체적인 예시를 들자면, 일반 프로그래머들은 루프 수행 최적화, 호출 최적화, 인트린식 적용 같은 기법들을 동원해 코드의 수행속도를 빠르게 하려고 한다. 하지만 그렇게 애써서 빠르게 만들고 있는 알고리즘 그 자체가 선택 정렬인 셈이다. 교수들은 아예 정렬 속도의 차원이 다른 퀵 정렬을 연구해서 논문에 발표한다. 해당 교수의 연구실에 있는 대학원생은 이 교수가 개발한 알고리즘(의사 코드)를 실제 수행 가능한 프로그램으로 바꾸는 코더 역할을 수행한다. 비록 이들 대학원생은 효율성이 매우 떨어지는 발적화 코드를 생성하겠지만 알고리즘 자체가 차원이 다르게 빠르기 때문에 선택 정렬보다 압도적으로 빠르게 된다. 그리고 이 알고리즘이 현장의 프로그래머들에게 알려지고, 프로그래머는 새로운 알고리즘을 자신들이 알고 있는 방법으로 최적화한다. 그런 식으로 IT산업이 발전해 나가는 것이다. 교수들이 코딩 못하는 게 무능한 게 아니란 소리다. 심지어 컴공과 교수가 컴맹일 수도 있다. 컴맹도 알고리즘 연구하는데는 별 지장이 없다. 다른 분야로 예시를 들자면 현장의 엔지니어들이 엔진의 초반 가속력을 높이려고 슈퍼차져를 달고 기어비를 조정하고 타이어를 재설계하는 고생을 하는 동안 교수들은 모터구동식 전기자동차를 연구하고 있다고 볼 수 있다.[30] 또 다른 분야로 철도 분야를 예시로 들면 고속열차를 만들려고 차륜과 레일의 점착력을 확보하고 에어로다이나믹을 적용하고 동력분산식 설계를 적용하는 등의 고생을 하는 동안 아예 바퀴를 없애버린 자기부상열차를 연구하고 있다고 볼 수 있다. 또한, 컴퓨터 분야의 발전과 변화가 엄청나게 빠르기 때문에 어제의 상식이 구시대의 유물로 변하는 것은 금방이다. 이를 계속 따라잡으려면 새로운 지식을 받아들이는 것을 게을리해서는 안 되고, 그렇지 못하면 도태될 수밖에 없기에 프로그래머라는 직업을 계속하기 위해서는 많은 노력이 필요하다.
이렇게 트렌트 파악 및 꾸준한 공부가 필요한 분야이기 때문에 한편으로 프로그래머집단은 동종업계 종사자들 사이에서 지식 공유가 활발한 분야이기도 하다. 예를 들어, 위키위키는 프로그래밍에 쓰는 패턴들을 정리하기 위해서 처음 탄생했다. 또한, 모르는 사람들이 모여서 상업적인 목적으로 만든 것보다 쓸만한 물건을 만들어 내는 오픈 소스 프로젝트는 활발한 지식 공유 없이는 유지될 수가 없다.
한편 양산형 프로그래머, 즉 코더가 아니라 제대로 된 프로그래머가 되고 싶다면 영어로 된 기술언어 정도는 읽고 쓸 수 있을 능력을 만들어둘 것을 추천한다. 컴퓨터는 미국에서 만들었고 현재 미국이 리드하고 있지 한국어로는 프로그램을 짤 수 없다!!![31] 그렇지만 본인이 영어 못한다고 좌절하지는 말자. 영어에도 분야에 따라 난이도라는 게 있다. 외교관영어가 최상급 난이도라고 가정하면, 기술자 영어는 생활영어보다도 더 아랫급인 아주(!) 쉬운 영어다. 어휘 자체가 공학영어는 생활영어보다 훨씬 적고, 3형식을 넘어가는 문장은 거의 쓰이지 않으며 에둘러 표현하는 것 따위는 절대 없다. 또한 문장에 애매모호함 따위는 없고 거의 모든 문장의 의미가 명확하다. 일반인이 들었을 때 왈도체스러운 영어를 구사하게 되니까 거기서 만족하면 곤란하지만 어쨌든 같은 기술자끼리는 말이 통한다. 정 안통하면 코드로 대화할 수도 있다. 이러한 외국어 독해 능력은 특별이 프로그래머라고 해서 해야 하는 어쩔 수 없는 일은 아니고, 다른 분야도 마찬가지다 해당 분야에 있어 가장 앞서가고 있는 국가의 언어를 습득하는 것은, 해당 분야에서 한발 앞서 나갈 수 있는 너무도 당연한 지름길 인것이다. 예를 들어 철학을 공부하려고 하는 사람은 독일어를 공부하는 것이 자신의 분야에서 앞서나가기 위한 필수코스이며, 한의학을 공부하면 한문을 공부해야 하는 것처럼, 보편적인 다른 분야와 마찬가지로 현재 컴퓨터 분야를 리드하고 있는 나라(미국)의 언어인 영어 를 공부한다면 해당 분야에서 앞서 나간는데 있어서 유리한 것은 너무나 당연한 것이다.
5. 이 속성을 가진 캐릭터
• 나루사와 카즈마 - 탐정학원Q
• 미스터 A - 비밀결사 매의발톱단 THE MOVIE- 나를 사랑한 흑우롱차
• 아이바 아사기 - 스트라이크 더 블러드
• 아카기 리츠코 - 신세기 에반게리온
• 아카사카 류노스케 - 사쿠라장의 애완 그녀
• 오오이시 이즈미 - 아이돌 마스터 신데렐라 걸즈
• 오카 타카오 - 역전재판 시리즈
• 웨일런 파크 - 아웃라스트
• 쿠나기사 토모 - 헛소리 시리즈
• 후지사키 치히로 - 단간론파 시리즈
• 나가토 유키 - 스즈미야 하루히 시리즈
6. 유사 용어
• 개발자
• 코딩덕후

1. [1] 잉여력이 넘치는 디시에서는 프로그램을 짜 도둑맞은 갤럭시탭을 되찾은 사람도 있었다.#
2. [2] 대학 말고 이렇게 깊이 가르치는 곳이 없기때문.
3. [3] 그냥 복붙하면 당연히 에러난다. 문맥에 맞게 코드를 수정할 수 있어야 한다. 그조차도 못하면 코더도 아니고 그냥 잉여다.
4. [4] 기반 프로그램. 운영체제(OS)나 카카오톡과 같이 여러가지 프로그램들이 작동하는 데 있어 기반이 되는 프로그램을 뜻한다.
5. [5] 윈도우 프로그래밍을 해 본 사람이라면 MFC가 떠오를 것이다
6. [6] 실제로 일일이 다 개발하는 데 드는 시간이 모두 절약되며, 코더 및 소프트웨어 개발자들에게 있어 시간은 곧 돈과 연결되기 때문이다.
7. [7] 다만 이건 '프로그래밍'이라는 관점에서 Python을 먼저 배우는게 좋다는 이야기이지, 컴퓨터공학을 배울때 Python으로 입문하는게 짱이다는 이야기는 아니다. 컴퓨터공학 커리큘럼에서 C를 먼저 배우는 이유는, 하드웨어 제어 등 전체적인 '컴퓨터 공학 개론'에 C가 적합하기 때문이다. 특히 유닉스 시스템 콜은 C를 모르면 학습 자체가 불가능하다. 당장 실생활에서 써먹을만한 프로그래머를 양산하려면 Java와 Python부터 가르치는게 짱이라는건 교수들도 잘 안다.
8. [8] 없으면 직접 질문해도 되지만, 그러기 위해서라도 생활영어 정도는 구사할 줄 알아야 한다.
9. [9] 각 언어들은 각자의 쓰임이 있기때문에 무턱대고 어떤 언어가 좋고 나쁘다를 따지는것은 매우 어리석은 짓이다. 만약 언어들의 절대적인 우열이 존재한다면 프로그래밍 언어는 하나로 통일됐을것이다. 자신의 목적에 따라 적합한 프로그래밍 언어를 선택하는것은 프로그래머의 중요한 능력중 하나이다.
10. [10] 대기업에서 ERP가 유행할때 ABAP 프로그래머나 아이폰 발매 초기 C프로그래머
11. [11] 하지만 종종 과금 상황을 확인해야 한다. 무료 기간이 지나거나 유료 서비스를 모르고 사용했다간 어마어마한 돈이 청구되는 불상사가 발생할 수 있다. 특히 계정이 해킹이라도 당하면 천만원 넘는 돈이 결제되는 수가 있다.
12. [12] 이는, 이를 제대로 배우기 위해서는 반드시 대학원 과정이 필요한데, 학부 과정 중에는 이를 소화할 수 없기 때문이다. 그래서 보통 이 분야가 무엇이다 정도만 배우게 된다.
13. [13] 이런 분야들은 보통 수학능력이 아닌, 수학적 지식이 많이 요구된다. 일반적인 코딩은 사칙연산/이산수학 및 간단한 논리력이 전제되는 수학능력이면 충분하지만, 저런 고급분야들은 분야에 따라 본격적인 대학수학인 해석학부터 시작하여, 확률, 대수, 수리논리, 위상, 기하 등의 지식을 전제하는 경우가 많다. 그래픽스 같이 현실과 밀접한 분야의 경우, 여기에 추가로 대학미적분 및 편미분, 삼각함수, 물리학도 추가한다. 이런분야들은 고졸로는 접근하기가 매우 힘들며, 대학에서도 대학원부터 시작하는 경우가 많다.
14. [14] 오죽하면 웬만한 스펙으론 노려보지도 못하는 N사 등의 대기업에서도 신입 학사 졸업자가 기본기가 없다는 볼멘소리가 나오겠는가?
15. [15] 선형대수학, 확률/통계론, 이산수학, 데이타구조, 알고리즘, 아키텍쳐, 프로그래밍 언어, OS, 오토마타, 시스템 프로그래밍, 네트워크, 소프트웨어 공학, 데이터베이스, 컴퓨터그래픽, 전산논리학, 컴파일러, 계산이론, 정보보호, 인공지능, 인간-컴퓨터 상호작용 등
16. [16] 단순한 코더로서 실무 열심히 한다고 이 지식을 배울 수 있을까? 대학 200번대까지는 어찌저찌 가능할지 모르지만 그 이후는 아인슈타인급 천재가 아닌 이상 불가능에 가깝다. 벽돌공 일을 30년 하면 건축 설계에 대해 모르지는 않게 되겠지만, 그렇다고 고급 건축 설계자가 될 수는 없다는 뜻. 단순한 코더가 아니라 고급 소프트웨어 엔지니어 혹은 아키텍트가 되고 싶다면 방향을 다르게 잡아야 한다.
17. [17] 이것은 학부 또한 마찬가지다. 학부를 나왔느냐가 중요한게 아니라 어떤 교육을 받고 어떤 실력을 쌓았느냐가 중요하다.
18. [18] 그나마 자대생(학부를 해당 대학에서 마친 학생)의 경우도 절반 넘게 학점에서 컷트 당한다. 자대가 아닌 경우 들어가기는 완전히 바늘구멍인데, 인서울 정도에서 이런 대학원을 가려면 과 1위를 해도 떨어지는 경우가 대다수인 상황.
19. [19] 미국의 사정 또한 마찬가지다. 아이비리그 등 최상위권 대학은 한국의 탑3 대학보다도 환경이 좋지만, 조금만 순위가 내려가더라도 수업의 질이 크게 떨어지고, 이는 결국 졸업자의 엄청난 경쟁력 저하로 이어진다. 결국 미국도 상황이 다르지 않다는 말.
20. [20] 좋은 대학을 가려면 수능 공부만 해야 한다고 생각하기 쉬운데, 그렇지도 않다. 수시 전형이 7~80%가 된 상황에서 정보올림피아드나 프로그래밍을 잘 하는 것이 오히려 확률적으로 더 유리하다.
21. [21] 물론 자기가 직접 벤처기업을 창업하는 경우에는 대학졸업장이 필요 없다. 대신 돈이 필요하다.
22. [22] 채용자 입장에서는 그 많은 지원자들의 능력을 일일이 직접적으로 다 테스트해서 체크해 볼 수는 없는 노릇이고, 결국 간접적으로 추정해야 하는데, 거기에 사용되는 자료가 학교 성적을 비롯하여, 학력/학벌 등인 것이다
23. [23] 전문분야 자체를 바꾸는 게 아니라면 대략 3종 내에서 결정되는 편이다.
24. [24] Go언어 설계자 중 한 명이 C언어를 만드신 켄 톰슨 옹이시다.
25. [25] 참고로 Go언어는 Erlang언어의 영향을 받았다.
26. [26] 2015 말부터 C언어의 점유율이 자바보다 떨어져 이제는 1위이다.
27. [27] 파이썬에서도 eval로 지원한다!
28. [28] 코더와 프로그래머를 구분하는 주장은 수도없이 많지만 명확히 정해진건 없다.

'Blog History' 카테고리의 다른 글

개 발 일 지 037  (0) 2019.12.06
개 발 일 지 036  (0) 2019.12.04
개 발 일 지 034  (1) 2019.12.04
개 발 일 지 033  (0) 2019.11.26
개 발 일 지 032  (0) 2019.11.26

!-- 참고해야할 keyword
기업에서 현재 필요한 기술.

직무내용

지원자격

우대사항

* React를 이용한
  웹 클라이언트 개발
- TypeScript 사용
- redux, redux-saga 사용

- 좋아하는 오픈소스 개발자가 있음
- 취미로 개발하는 소프트웨어
  프로젝트가 있음
- 중복되는 것(코드, 반복되는
  일처리, 할당된 메모리 등등)을
  굉장히 싫어함
- 기획자, 동료 개발자와의 원활한
  커뮤니케이션 능력

- Client-side web application 개발 경험
  1) UI library or framework 관련 경험
     (ex. Angular, React, or Vue.js)
  2) Transpiler 사용 경험
     (ex. es6 with babel, TypeScript)
  3) Webpack 등 bundler 사용 경험
- Functional programming, OOP 등의
  주요 프로그래밍 패러다임에 대한 이해
- 유닛 테스트와 CI 경험
- 오픈소스 프로젝트 참여 경험
- 개발 관련 세미나 발표 경험
- 함수나 변수 이름을 며칠에 걸쳐
  열 번쯤 바꿔본 이후에 궁극의 이름을
  찾아내본 경험

- Django와 MySQL을
  이용한 REST API
  서버 개발
- AWS 상의 애플리케이션
  배포, 관리



- Server-side web application 개발 경험
  1) REST API, GraphQL 구현 경험
  2) DevOps 경험
- Functional programming, OOP 등의
  주요 프로그래밍 패러다임에 대한 이해
- 유닛 테스트와 CI 경험
- 기획자, 동료 개발자와의 원활한
  커뮤니케이션 능력
- 오픈소스 프로젝트 참여 경험
- 개발 관련 세미나 발표 경험
- 함수나 변수 이름을 며칠에 걸쳐
  열 번쯤 바꿔본 이후에 궁극의 이름을
  찾아내본 경험

- Java와 Kotlin을 이용한
  안드로이드 앱 개발



- Kotlin 사용 경험
- Functional programming,
  Reactive Programming, OOP 등의
  주요 프로그래밍 패러다임에 대한 이해
- 유닛 테스트와 CI 경험
- 오픈소스 프로젝트 참여 경험
- 개발 관련 세미나 발표 경험
- 함수나 변수 이름을 며칠에 걸쳐
  열 번쯤 바꿔본 이후에 궁극의 이름을
  찾아내본 경험

- Django와 MySQL을
  이용한 REST API 서버
  개발
- AWS 상의 애플리케이션
  배포, 관리



- Server-side web application 개발 경험
  1) REST API, GraphQL 구현 경험
  2) DevOps 경험
- Functional programming,
  Reactive Programming, OOP 등의
  주요 프로그래밍 패러다임에 대한 이해
- 유닛 테스트와 CI 경험
- 오픈소스 프로젝트 참여 경험
- 개발 관련 세미나 발표 경험
- 함수나 변수 이름을 며칠에 걸쳐
  열 번쯤 바꿔본 이후에 궁극의 이름을
  찾아내본 경험

node.js와 MySQL을
  이용한 GraphQL 서버
  개발
- Elasticsearch를 이용한
  검색 기능 개발
- Docker를 이용한
  AWS 상의 애플리케이션
  배포, 관리
Next.js와 GraphQL를
  이용한 웹 클라이언트
  개발



- Server-side web application 개발 경험
  1) REST API, GraphQL 구현 경험
  2) DevOps 경험
- Client-side web application 개발 경험
  1) UI library or framework 관련 경험
     (ex. Angular, React, or Vue.js)
  2) Transpiler 사용 경험
     (ex. es6 with babel, TypeScript)
  3) Webpack 등 bundler 사용 경험
- Functional programming, OOP 등의
  주요 프로그래밍 패러다임에 대한 이해
- 유닛 테스트와 CI 경험
- 오픈소스 프로젝트 참여 경험
- 개발 관련 세미나 발표 경험
- 함수나 변수 이름을 며칠에 걸쳐
  열 번쯤 바꿔본 이후에 궁극의 이름을
  찾아내본 경험

Next.js와 GraphQL를
  이용한 웹 클라이언트
  개발



- Client-side web application 개발 경험
  1) UI library or framework 관련 경험
     (ex. Angular, React, or Vue.js)
  2) Transpiler 사용 경험
    (ex. es6 with babel, TypeScript)
  3) Webpack 등 bundler 사용 경험
- Functional programming, OOP 등의
  주요 프로그래밍 패러다임에 대한 이해
- 유닛 테스트와 CI 경험
- 오픈소스 프로젝트 참여 경험
- 개발 관련 세미나 발표 경험
- 함수나 변수 이름을 며칠에 걸쳐
  열 번쯤 바꿔본 이후에 궁극의 이름을
  찾아내본 경험

node.js와 MySQL을
  이용한 GraphQL 서버
  개발
- Elasticsearch를 이용한
  검색 기능 개발
- Docker를 이용한
  AWS 상의 애플리케이션
  배포, 관리



- Server-side web application 개발 경험
  1) REST API, GraphQL 구현 경험
  2) DevOps 경험
- Functional programming, OOP 등의
  주요 프로그래밍 패러다임에 대한 이해
- 유닛 테스트와 CI 경험
- 오픈소스 프로젝트 참여 경험
- 개발 관련 세미나 발표 경험
- 함수나 변수 이름을 며칠에 걸쳐
  열 번쯤 바꿔본 이후에 궁극의 이름을
  찾아내본 경험



!-- 26일자 SQLite3 도 아직...
2019-11-26 15:05:33.924725+0900 myApp[61036:2471649] [logging] RIGHT and FULL OUTER JOINs are not currently supported


!--Array copy on iOS 13+

copiedList= [[NSMutableArray alloc] initWithArray:sortedArray copyItems:YES ];

copiedList=[[[NSMutableArray alloc] initWithArray:sortedArray copyItems:YES ] retain];

하면... copyWithZone:]: unrecognized selector sent to instance 0x600001c3cff0

copiedList=[NSMutableArray arrayWithArray:sortedArray];

!-- iOS_objc 백버튼 "이전" 으로 통일

- (void)viewDidLoad
{
.
.
.

    UIBarButtonItem *left = [[UIBarButtonItem alloc] initWithTitle:@"이전" style:UIBarButtonItemStyleBordered target:self action:@selector(backTapped)];
    self.navigationItem.backBarButtonItem = left;
}

-(void) backTapped {
        [self.navigationController popViewControllerAnimated:NO];
}

!-- popviewcontller twice

using index

[self.navigationController popToViewController:[self.navigationController.viewControllers objectAtIndex:2] animated:YES];




!-- git 몇 개나 커밋 했을까? 

git log --pretty=oneline --abbrev-commit | wc -l

git 커밋 개수

!-- Message from debugger: Terminated due to memory issue

[ServicesDaemonManager] interruptionHandler is called. -[FontServicesDaemonManager connection]_block_invoke



'Blog History' 카테고리의 다른 글

개 발 일 지 036  (0) 2019.12.04
개 발 일 지 035  (0) 2019.12.04
개 발 일 지 033  (0) 2019.11.26
개 발 일 지 032  (0) 2019.11.26
개 발 일 지 031  (0) 2019.11.26

+ Recent posts