전 글 댓글 문제점은 git init 후에 setup 을 실행시키니 해결되었다. git history 가 너무 많아 shell도 힘들어 할 정도니 history 검색은 원 폴더에서 하고 작업은 copy folder에서 하는 것이 맞다. Xcode도 git 지원이 되니 말이다.
네이버 웨일이던 이스트소프트 스윙이던 http://www.chromium.org/크로미움 프로젝트에서 branch out? clone? copy? 하여 만든 프로젝트인데 나름 시장을 개척하고 있는 것 같고, 지금 개인이 branch out 하면 더 이득일 것 같아서 프로젝트를 진행 해 보기로 한다. 본래 잘 되는 오픈 소스에서 branch out을 할 때는 타이밍을 잘 봐야 이 후 merge 되는 killer function 을 놓치지 않을 수 있는데. 나 같은 경우 모바일이 주 전공이다 보니 충분히 기다렸다는 생각이 든다. 개인이라 커스터 마이징 기록을 남겨 두고 패치로 만든 다면 굳이 어려운 merging이 아니라 언제든 새로운 브랜치에서 out 할 수 있는 가벼움까지 가질 수 있으니 개인이 기업을 이길 또 하나의 무기가 될 것이라 생각이 된다.뭐, 사실 개인이 이길 수 밖에 없는 이유는 진입 불가능한 비용 시장 때문이고. 언리얼과 같은 오픈 소스가 이길 수 밖에 없는 이유는 생태계와 브랜드를 잡은 업체가 모두를 흡수 할 수 마이크로소프트 전략도 있고, 도저히 변화를 따라갈 수 없는 오픈 환경이라는 것도 있다. 텐서플로우도 그 중 하나인데 어느 정도 시기가 되면 모두 closed 되거나 close 와 비슷한 행태(일부를 떼서 무조건 원격으로 받아야 하는 모듈로 만든다던지...) 때문에 branch out project를 하는 것이다. 가져 간다는 의미는 아니고. 어차피 시간과 충분한 돈이 있다면 이미 만들어진 cpu instruction set과 오랜 기간 공부 해 본 operating system 아키텍팅 기법에서 못 만들 것은 없으니까.
소스 받는데 2시간 걸린다. 히스토리 안 받는 옵션 주면 빠르다고 해서 줬더니 나중에 오류가 난다. ㅡㅡ; 중간에 멈추니 다시 시작 하는 옵션없으니 지우고 받으라고 한다. 믓튼, 그렇게 소스 받는데만 4시간 쓰고.
원 소스는 소중하여 저장하였다.
tar --exclude='./src/.git' -zcvf chrome.tar.gz ./src
그리고 개인 프로젝트니 chromium 보다 chrome build라고 한다. open jdk 할 때도 그냥 jdk라 불렀듯이.
Adddepot_toolsto the end of your PATH (you will probably want to put this in your~/.bashrcor~/.zshrc). Assuming you cloneddepot_toolsto/path/to/depot_tools:
$ export PATH="$PATH:/path/to/depot_tools"
Get the code
Create achromiumdirectory for the checkout and change to it (you can call this whatever you like and put it wherever you like, as long as the full path has no spaces):
$ mkdir chromium && cd chromium
Run thefetchtool fromdepot_toolsto check out the code and its dependencies.
$ fetch ios
If you don't want the full repo history, you can save a lot of time by adding the--no-historyflag tofetch.
Expect the command to take 30 minutes on even a fast connection, and many hours on slower ones.
Whenfetchcompletes, it will have created a hidden.gclientfile and a directory calledsrcin the working directory. The remaining instructions assume you have switched to thesrcdirectory:
$ cd src
Optional: You can alsoinstall API keysif you want your build to talk to some Google services, but this is not necessary for most development and testing purposes.
Setting up the build
Since the iOS build is a bit more complicated than a desktop build, we provideios/build/tools/setup-gn.py, which will create four appropriately configured build directories underoutfor Release and Debug device and simulator builds, and generates an appropriate Xcode project (out/build/all.xcodeproj) as well.
More information aboutdeveloping with Xcode.Xcode project is an artifact, any changes made in the project itself will be ignored.
You can customize the build by editing the file$HOME/.setup-gn(create it if it does not exist). Look atsrc/ios/build/tools/setup-gn.configfor available configuration options.
From this point, you can either build from Xcode or from the command line usingautoninja.setup-gn.pycreates sub-directories namedout/${configuration}-${platform}, so for aDebugbuild for simulator use:
$ autoninja -C out/Debug-iphonesimulator gn_all
(autoninjais a wrapper that automatically provides optimal values for the arguments passed toninja.)
Note: Thesetup-gn.pyscript needs to run every time one of theBUILD.gnfiles is updated (either by you or after rebasing). If you forget to run it, the list of targets and files in the Xcode solution may be stale. You can run the script directly or use eithergclient syncorgclient runhookswhich will runsetup-gn.pyfor you as part of the update hooks.
You can add a custom hook to.gclientfile to configuresetup-gn.pyto be run as part ofgclient runhooks. In that case, your.gclientfile would look like this:
You can also follow the manual instructions on theMac page, but make sure you set the GN argtarget_os="ios".
Building for device
To be able to build and run Chromium and the tests for devices, you need to have an Apple developer account (a free one will work) and the appropriate provisioning profiles, then configure the build to use them.
Code signing identity
Please refer to the Apple documentation on how to get a code signing identity and certificates. You can check that you have a code signing identity correctly installed by running the following command.
If the command output says you have zero valid identities, then you do not have a code signing identity installed and need to get one from Apple. If you have more than one identity, the build system may select the wrong one automatically, and you can use theios_code_signing_identitygn variable to control which one to use by setting it to the identity hash, e.g. to"0123456789ABCDEF0123456789ABCDEF01234567".
Mobile provisioning profiles
Once you have the code signing identity, you need to decide on a prefix for the application bundle identifier. This is controlled by the gn variableios_app_bundle_id_prefixand usually corresponds to a reversed domain name (the default value is"org.chromium").
You then need to request provisioning profiles from Apple for your devices for the following bundle identifiers to build and run Chromium with these application extensions:
All these certificates need to have the “App Groups” (com.apple.security.application-groups) capability enabled for the following groups:
group.${prefix}.chrome
group.${prefix}.common
Thegroup.${prefix}.chromeis only shared by Chromium and its extensions to share files and configurations while thegroup.${prefix}.commonis shared with Chromium and other applications from the same organisation and can be used to send commands to Chromium.
Mobile provisioning profiles for tests
In addition to that, you need a different provisioning profile for each test application. Those provisioning profile will have a bundle identifier matching the following pattern${prefix}.gtest.${test-suite-name}where${test-suite-name}is the name of the test suite with underscores changed to dashes (e.g.base_unittestsapp will use${prefix}.gest.base-unittestsas bundle identifier).
To be able to run the EarlGrey tests on a device, you'll need two provisioning profiles for EarlGrey and OCHamcrest frameworks:
${prefix}.test.OCHamcrest
${prefix}.test.EarlGrey
In addition to that, then you'll need one additional provisioning profile for the XCTest module too. It must match the pattern:${prefix}.gtest.${test-suite-name}-module.
Other applications
Other applications likeios_web_shellusually will require mobile provisioning profiles with bundle identifiers that may usually match the following pattern${prefix}.${application-name}and may require specific capabilities.
Generally, if the mobile provisioning profile is missing then the code signing step will fail and will print the bundle identifier of the bundle that could not be signed on the command line, e.g.:
$ autoninja -C out/Debug-iphoneos ios_web_shell ninja:Entering directory `out/Debug-iphoneos' FAILED: ios_web_shell.app/ios_web_shell ios_web_shell.app/_CodeSignature/CodeResources ios_web_shell.app/embedded.mobileprovision python ../../build/config/ios/codesign.py code-sign-bundle -t=iphoneos -i=0123456789ABCDEF0123456789ABCDEF01234567 -e=../../build/config/ios/entitlements.plist -b=obj/ios/web/shell/ios_web_shell ios_web_shell.app Error: no mobile provisioning profile found for "org.chromium.ios-web-shell". ninja: build stopped: subcommand failed.
Here, the build is failing because there are no mobile provisioning profiles installed that could sign theios_web_shell.appbundle with the identity0123456789ABCDEF0123456789ABCDEF01234567. To fix the build, you'll need to request such a mobile provisioning profile from Apple.
You can inspect the file passed via the-eflag to thecodesign.pyscript to check which capabilites are required for the mobile provisioning profile (e.g.src/build/config/ios/entitlements.plistfor the above build error, remember that the paths are relative to the build directory, not to the source directory).
If the required capabilities are not enabled on the mobile provisioning profile, then it will be impossible to install the application on a device (Xcode will display an error stating that “The application was signed with invalid entitlements”).
Running apps from the command line
Any target that is built and runs on the bots (seebelow) should run successfully in a local build. To run in the simulator from the command line, you can useiossim. For example, to run a debug build ofChromium:
With Xcode 9,iossimno longer automatically launches the Simulator. This must now be done manually from within Xcode (Xcode > Open Developer Tool > Simulator), and also must be doneafterrunningiossim.
Passing arguments
Arguments needed to be passed to the test application throughiossim, such as--gtest_filter=SomeTest.FooBarshould be passed through the-cflag:
EarlGrey tests are run differently than other test targets, as there is an XCTest bundle that is injected into the target application. Therefore you must also pass in the test bundle:
By default,iossimwill pick an arbitrary simulator to run the tests. If you want to run them on a specific simulator, you can use-dto pick the simulated device and-sto select the iOS version.
For example, to run the tests on a simulated iPhone 6s running iOS 10.0, you would invokeiossimlike this.
Please note that by default only a subset of simulator devices are installed with Xcode. You may have to install additional simulators in Xcode (or even an older version of Xcode) to be able to run on a specific configuration.
Go to “Preferences > Components” tab in Xcode to install other simulator images (this is the location the setting is in Xcode 9.2; it may be different in other version of the tool).
Update your checkout
To update an existing checkout, you can run
$ git rebase-update $ gclient sync
The first command updates the primary Chromium source repository and rebases any of your local branches on top of tip-of-tree (aka the Git branchorigin/master). If you don't want to use this script, you can also just usegit pullor other common Git commands to update the repo.
The second command syncs dependencies to the appropriate versions and re-runs hooks as needed.
Tips, tricks, and troubleshooting
Remember that the XCode project you interact with while working on Chromium is a build artifact, generated from theBUILD.gnfiles. Do not use it to add new files; instead see the procedures forworking with files.
If you have problems building, join us in#chromiumonirc.freenode.netand ask there. As mentioned above, be sure that thewaterfallis green and the tree is open before checking out. This will increase your chances of success.
Improving performance ofgit status
Increase the vnode cache size
git statusis used frequently to determine the status of your checkout. Due to the large number of files in Chromium‘s checkout,git statusperformance can be quite variable. Increasing the system’s vnode cache appears to help. By default, this command:
$ sysctl -a | egrep kern\..*vnodes
Outputskern.maxvnodes: 263168(263168 is 257 * 1024). To increase this setting:
$ sudo sysctl kern.maxvnodes=$((512*1024))
Higher values may be appropriate if you routinely move between different Chromium checkouts. This setting will reset on reboot, the startup setting can be set in/etc/sysctl.conf:
$ echo kern.maxvnodes=$((512*1024))| sudo tee -a /etc/sysctl.conf
Or edit the file directly.
Configure git to use an untracked cache
Ifgit --versionreports 2.8 or higher, try running
$ git update-index --test-untracked-cache
If the output ends withOK, then the following may also improve performance ofgit status:
$ git config core.untrackedCache true
Ifgit --versionreports 2.6 or higher, but below 2.8, you can instead run
$ git update-index --untracked-cache
Xcode license agreement
If you're getting the error
Agreeing to the Xcode/iOS license requires admin privileges, please re-run as root via sudo.
the Xcode license hasn't been accepted yet which (contrary to the message) any user can do by running:
$ xcodebuild -license
Only accepting for all users of the machine requires root:
중급편을 진작에 발간했어야 하는데 python, node, tensorflow 에 너무 빠져 있다가 정신차려 보니 어느새 3개 회사 이사가 되었고, 법인 카드가 4개가 되어 인스타에 인증을 했더랬다. 하나만 잘하는 것도 힘든데 소소하게 여러 개가 되다보니 정신은 분산되었고, 당연히 지금은 다 정리하는 중이다. 나는 제품을 만드는 사람이고, 주변에는 무언가 만들고 싶은 사람들이 많았기에 여러 일을 할 수 밖에 없었다. 본업은 앵벌이고 앵벌이 하는 pool 에 프리랜서가 많아서 다행히 편하게 다른 일들을 할 수 있었다.
그 동안 기술은 너무도 빠르게 발전했고, 나도 4학년이 된 이 후 벌써 중반이 흘러 버렸다. 세계 최초, 최고, 국내 최초, 최고 등의 타이틀이 어떤 것인지 경험할 수 있었지만 아직 목마름이 있다.
산업은 코로나 이전과 이후로 나뉜다고 하는데 비대면 서비스는 완전 기본중에 기본인 것 같고. 리눅스, 윈도우, 안드로이드, iOS 및 관련 컴파일러 + 랭귀지 등 종합 선물세트인 분야라 하기로 했었고 어느 정도 성과가 있었다.
아마도 중급편은 이런 내용을 토대로 쓸 것 같고 예전 카테고리(게시판)은 거의 이용치 않기에 프로젝트 게시판으로 바꾸었다.
모든 내용을 공개하지는 못하지만 내가 고민하는 부분이 어떤 것인지 궁금한 사람에게 조금이나마 도움이 되었으면 한다.
HDMI + touch 패널 인식을 위한 usb 포트가 지원되는 임베디드 보드라면 okay.
스크린 크기가 크다면 데스크탑으로 가는 것을 추천.
기본적으로 보드 분리가 쉽도록 기구 설계를 해야 함.
안드로이드의 경우 오드로이드 추천 :
GPIO 핀 조금만 쇼트나도 보드가 죽지만 한 번 박아 놓으면 6개월 연속 동작 잘함. 단, AP fan 수명 예측이 안되기 때문에 고려해봐야함.
리눅스의 경우 라즈베리 파이 추천 : 라즈비안 버전별 선택이 가장 중요함.(실 업체가 있기에 관련 내용은 공유 x. 궁합 맞는 패키지를 위해서는 삽질이 필요)
윈도우의 경우 데스크탑 추천: teamviewer는 정말... 궁극의 솔루션. mstsc는 고정 IP 없는 상황에서는 구려서...
뭐, 이 정도다.
device driver가 포함된 범용 OS, USB와 HDMI의 등장으로 키오스크가 사업성을 가지려면 다른 솔루션과 결합해야 한다.
최근 핫한 것은 얼굴 인식인 듯. AI 난이도 [하]
자체 솔루션이 없는 경우 솔루션 제작까지 포함하여(커널패치(250만원)나 디바이스 드라이버(250만원), 솔루션(200), 패널+보드or 컴퓨터(300)) 1000 정도로 보면 된다. 기간은 2달. 일전에 모 스트트업 Wi-Fi 커널 패치 해 준 적이 있는데 250 받았었다. 태권이가 세금 처리 해 주었고... 세금하고 따져, 이래저래 나누니 한 150 받는 다고 보면 된다. 알바비는 사실 오투잡이나 크몽 수준인데 커널 좋아하는 분이면 생각보다 재미있긴 하지만, ... 이 분야는 이제 좀 아닌 것 같다는 생각이 들었다. 언젠가 임베디드 분야 블로그 탑100에 넣어 주었던데 사실, 임베디드 분야는 안드로읻, 라즈베리 파이와 AI 때문에 살아 남은 기업만 살고 대부분 죽었다고 보면 되겠다.
비슷한 건으로 이번 주에
MCU GPIO, 블루투스(라즈베리파이 보드 모듈 써도 됨), 고전압발생 모듈(3.3V to 500V), LQFP128핀 칩 소켓, 전원부, 딥스위치, LED등 주변부품 탑재된 보드와 펌웨어(하기 2번 제어신호 받아서 GPIO에 On/Off/32비트 카운트값 출력) 핸드폰에서 보드와 블루투스 통신으로 제어 신호로써 On/Off/32비트 카운트값 전달 앱 이 가격도 천만원 선인데 다른 곳과 연결...
ETRI에서는 GPIO 디바이스 드라이버 제작 강좌를 3년 간 해 왔었는데, 이제 규모 싸움에서 안되니 개인이 할 수 있는 부분은 추상화 단계를 많이 올려야 가능하다. 중소기업이라도 오랜 펌웨어 엔지니어는 1억~1억 8천 정도 받는데 사실 자신을 갉아 먹는 일로 보여진다.
즉, 새로운 유입은 막고 싶다. 기존 엔지니어들이 정년 넘어 정말 원할 때 그만두게 하려면 시장 조정도 필요하니... 실제로 하드웨어 엔지니어 다수가 S/W 이전을 하고 그 S/W 인력들이 웹이나 앱 쪽으로 가면서 원하는 회사로 이직을 잘 하고 있다. H/W familier 한 회사는 정말 그 안에서 쇼부(일본어)를 쳐야 하기 때문에 많은 제자들이 그만 둔다고 말하다가 ... 상담 이 후 상당히 만족하는 워라벨을 가졌다고들 말한다. 사실 말 안하면 모른다. 참는게 능사가 아니다.
아무튼.... 최근 키오스크 제작 관련 의뢰가 들어와서 이미 오래 전에 했지만, 다시 하며 이것저것 써 보았다. 하다보니 집에 하나 들여놔도 괜찮겠다는 생각이다. 컴퓨터가 똑같은 기능을 할 수 있지만, 키오스크가 주는 느낌과 컴퓨터가 주는 느낌은 많이 다르다. 전자앨범도 그랬었다.
npm WARN deprecated request@2.88.2: request has been deprecated, see https://github.com/request/request/issues/3142 npm WARN deprecated minimatch@0.2.14: Please update to minimatch 3.0.2 or higher to avoid a RegExp DoS issue npm WARN deprecated to-iso-string@0.0.2: to-iso-string has been deprecated, use @segment/to-iso-string instead. npm WARN deprecated mkdirp@0.5.1: Legacy versions of mkdirp are no longer supported. Please update to mkdirp 1.x. (Note that the API surface has changed to use Promises in 1.x.) npm WARN deprecated jade@0.26.3: Jade has been renamed to pug, please install the latest version of pug instead of jade npm WARN deprecated minimatch@0.3.0: Please update to minimatch 3.0.2 or higher to avoid a RegExp DoS issue npm WARN deprecated mkdirp@0.3.0: Legacy versions of mkdirp are no longer supported. Please update to mkdirp 1.x. (Note that the API surface has changed to use Promises in 1.x.) npm WARN deprecated graceful-fs@1.2.3: please upgrade to graceful-fs 4 for compatibility with current and future versions of Node.js
yarn install v1.22.4 info No lockfile found. [1/4] Resolving packages... warning bower@1.3.12: This Bower version has SECURITY BUG THAT ALLOWS TO WRITE TO ARBITRARY FILE ON YOUR COMPUTER when you install malicious package. Please upgrade Bower to at least version 1.8.8 if you don't want to get hacked. More info: https://snyk.io/blog/severe-security-vulnerability-in-bowers-zip-archive-extraction/ warning bower > mkdirp@0.5.0: Legacy versions of mkdirp are no longer supported. Please update to mkdirp 1.x. (Note that the API surface has changed to use Promises in 1.x.) warning bower > request@2.42.0: request has been deprecated, see https://github.com/request/request/issues/3142 warning bower > insight > request@2.88.2: request has been deprecated, see https://github.com/request/request/issues/3142 warning bower > glob > minimatch@1.0.0: Please update to minimatch 3.0.2 or higher to avoid a RegExp DoS issue warning bower > graceful-fs > natives@1.1.6: This module relies on Node.js's internals and will break at some point. Do not use it, and update to graceful-fs@4.x. warning bower > bower-json > graceful-fs@2.0.3: please upgrade to graceful-fs 4 for compatibility with current and future versions of Node.js warning bower > bower-registry-client > graceful-fs@2.0.3: please upgrade to graceful-fs 4 for compatibility with current and future versions of Node.js warning bower > bower-registry-client > request@2.51.0: request has been deprecated, see https://github.com/request/request/issues/3142 warning bower > bower-registry-client > mkdirp@0.3.5: Legacy versions of mkdirp are no longer supported. Please update to mkdirp 1.x. (Note that the API surface has changed to use Promises in 1.x.) warning bower > insight > tough-cookie@0.12.1: ReDoS vulnerability parsing Set-Cookie https://nodesecurity.io/advisories/130 warning bower > bower-config > graceful-fs@2.0.3: please upgrade to graceful-fs 4 for compatibility with current and future versions of Node.js warning bower > request > node-uuid@1.4.8: Use uuid module instead warning bower > bower-registry-client > request > node-uuid@1.4.8: Use uuid module instead warning bower > request > hawk@1.1.1: This module moved to @hapi/hawk. Please make sure to switch over as this distribution is no longer supported and may contain bugs and critical security issues. warning bower > bower-registry-client > request > hawk@1.1.1: This module moved to @hapi/hawk. Please make sure to switch over as this distribution is no longer supported and may contain bugs and critical security issues. warning bower > request > hawk > hoek@0.9.1: This version has been deprecated in accordance with the hapi support policy (hapi.im/support). Please upgrade to the latest version to get the best features, bug fixes, and security patches. If you are unable to upgrade at this time, paid support is available for older versions (hapi.im/commercial). warning bower > request > hawk > boom@0.4.2: This version has been deprecated in accordance with the hapi support policy (hapi.im/support). Please upgrade to the latest version to get the best features, bug fixes, and security patches. If you are unable to upgrade at this time, paid support is available for older versions (hapi.im/commercial). warning bower > request > hawk > boom > hoek@0.9.1: This version has been deprecated in accordance with the hapi support policy (hapi.im/support). Please upgrade to the latest version to get the best features, bug fixes, and security patches. If you are unable to upgrade at this time, paid support is available for older versions (hapi.im/commercial). warning bower > request > hawk > cryptiles@0.2.2: This version has been deprecated in accordance with the hapi support policy (hapi.im/support). Please upgrade to the latest version to get the best features, bug fixes, and security patches. If you are unable to upgrade at this time, paid support is available for older versions (hapi.im/commercial). warning bower > request > hawk > cryptiles > boom@0.4.2: This version has been deprecated in accordance with the hapi support policy (hapi.im/support). Please upgrade to the latest version to get the best features, bug fixes, and security patches. If you are unable to upgrade at this time, paid support is available for older versions (hapi.im/commercial). warning bower > request > hawk > sntp@0.2.4: This module moved to @hapi/sntp. Please make sure to switch over as this distribution is no longer supported and may contain bugs and critical security issues. warning bower > request > hawk > sntp > hoek@0.9.1: This version has been deprecated in accordance with the hapi support policy (hapi.im/support). Please upgrade to the latest version to get the best features, bug fixes, and security patches. If you are unable to upgrade at this time, paid support is available for older versions (hapi.im/commercial). warning bower > update-notifier > latest-version > package-json > registry-url > npmconf@2.1.3: this package has been reintegrated into npm and is now out of date with respect to npm warning hjs > hogan.js > mkdirp@0.3.0: Legacy versions of mkdirp are no longer supported. Please update to mkdirp 1.x. (Note that the API surface has changed to use Promises in 1.x.) warning node-sass-middleware > node-sass > request@2.88.2: request has been deprecated, see https://github.com/request/request/issues/3142 warning node-sass-middleware > node-sass > mocha > mkdirp@0.5.1: Legacy versions of mkdirp are no longer supported. Please update to mkdirp 1.x. (Note that the API surface has changed to use Promises in 1.x.) warning node-sass-middleware > node-sass > mocha > glob > minimatch@0.3.0: Please update to minimatch 3.0.2 or higher to avoid a RegExp DoS issue warning node-sass-middleware > node-sass > gaze > globule > minimatch@0.2.14: Please update to minimatch 3.0.2 or higher to avoid a RegExp DoS issue warning node-sass-middleware > node-sass > gaze > globule > glob > minimatch@0.2.14: Please update to minimatch 3.0.2 or higher to avoid a RegExp DoS issue warning node-sass-middleware > node-sass > gaze > globule > glob > graceful-fs@1.2.3: please upgrade to graceful-fs 4 for compatibility with current and future versions of Node.js warning node-sass-middleware > node-sass > mocha > to-iso-string@0.0.2: to-iso-string has been deprecated, use @segment/to-iso-string instead. warning node-sass-middleware > node-sass > mocha > jade@0.26.3: Jade has been renamed to pug, please install the latest version of pug instead of jade warning node-sass-middleware > node-sass > mocha > jade > mkdirp@0.3.0: Legacy versions of mkdirp are no longer supported. Please update to mkdirp 1.x. (Note that the API surface has changed to use Promises in 1.x.) warning socket.io > socket.io-parser > json3@3.3.2: Please use the native JSON object instead of JSON 3 [2/4] Fetching packages... [3/4] Linking dependencies... [4/4] Building fresh packages...
오드로이드 프로젝트를 3개 정도 했는데, 이제 딱히 같이 만들자 하는 사람이 없어 적어본다. 사유는,
1. 굳이 저전력 임베디드로 할 필요가 없다. 키오스크 하나가 사람 하나를 대체하는 시대가 와서 비용 부담이 가능하기 때문이다. 임베디드 보다는 데스크탑도 미니로 나오는 시대에 데탑으로 만드는게 낫다.
2. 하드웨어는 싸게 공급하고 S/W 월 회비/운영/관리비로 가는게 대세인데 H/W 받고 나고 휘말리면 나중에 계속 구매하게 되더라도 가격이 저렴하다. 그게 아니라면 키오스크 전문 업체도 아닌데 인력을 계속 유지해야 한다. 물론, 좋은 파트너고 서로 가격 관련해서 협의할 수 있는 관계 지속 유지라는 베이스가 있어야 한다.
주변에서 장비를 다룬다고 하는 하드웨어 제어 업체는 모두 라즈베리 파이를 쓴다. 그래도 키오스크는 국산 솔루션 썼으면 한다. 국내에서는 보드 직접 뜨는 것 아니라면, 매우 저렴한 최선의 선택인 것 같다. 업체 의뢰 금액은 당연히 하드웨어에 따라 천차 만별 이겠으나 여러 군데 알아봤을 대 키오스크 가격은 150~500 사이인 것 같다.
이 글에서 가장 중요한 파트는 "이제 딱히 같이 만들자 하는 사람이 없어 적어본다."는 것이다.
그대가 사는 분이 분양가 보다 너무 떨어졌다고 계속 말하길래 그냥 수년 간 믿었다. 굳이 내가 가격 알아볼 필요가 있나 옆 동네고 난 아파트 가격 오천씩 왔다갔다 해도 어차피 살 집이라 관심없었다. 워크아웃되어서 싸게 산터라 그냥 만족하며 살고 있다. 이미 하자 보수 끝났는데 워크아웃이 뭔 상관인지 모르겠다만 난 득을 보았다. 그런데 최근 와이프 친구도 망포 그대가 센트럴 파크 입주민인데 같은 이야기를 하길래 찾아보았다. 늘 설치되어 있던 앱인데도 클릭할 생각이 없었던 것은 내가 월급 명세서를 십년 넘게 확인 안하는 거랑 같이 귀차니즘이다.
나야 상관없는 사람이라 쳐도,.... 지인도 구라를 치는데 얼마나 많은 사람들이 부동산 가격 장난에 놀아날까 안타까운 마음이다.
이제 지인이라 부르지도 말아야지. 늙으니 그냥 다 귀찮다. 정말 흠 없는 사람 만나기도 바쁘다. 그런 사람들 만나면서 닮으려고 노력해야지.
키보드가 또 고장났다 아직 산지 얼마 안되어서 애플 케어도 9월까지는 무상 수리 된다. 추가 케어 플랜을 구입하지 않아도 애플 키보드는 더 오래 보증이 된다고 알고 있다. 3년인지 5년인지.
그러나 최근 애플 케어도 국내는 모두 차단되었고 그게 12월 인줄도 모르다가 최근 알았다.
한국 애플은 매우 밑보이며 딜을 하는지 최근 가로수 길 애플 매장 하나 생긴게 전부도 그 외는 일본 서비스가 좋아 보인다. 수년간의 이런 이미지는 사실 언제 어떻게 또 지원 플랜이 바뀔지 의심이 가는 부분이다.
그래서 매직 키보드를 쓰고 버티다가 7월 이후에나 수리할 생각이다. 한번 받아 본 경험으로는 키보드를 갈 때 배터리 싸이클도 완전 초기화가 되기 때문이다. 수리하는 것을 보이지는 않았으나 수리 후 기판을 받아보니 보호 스티카가 붙은 완전히 교체된 새 하핀을 보있을 때 하판에 붙은 메인보드만 옮기는 것 같았다.
부품도 입고를 해야 애플이 보내 준다고 한 것으로 미루어 보아, 분해 조립 부분이 어려우면 애플이 고민해야 할 수리 품질의 불확실성도 올라가니까 배터리와 키보드가 포함된 하판을 교체해 준다고 보면 되겠다.
맥북 에어를 살 때 신형 나오기 직전인데도 예전 것을 산 것은 정말 탁월한 선택이었던 것 같다. 자주 쓰지 않아서 아마 보증 기간 끝나고 문제가 발현되었을 가능성이 있기 때문이다.
그래도 구형 맥북 에어는 오래도록 검증을 받은 제품이니...
이번 경험으로 이제 확실히 맥북은 맥북 프로 15인치에 최고 사양을 사고, 들고 다니기 불편해도 하나만 쓰는 것이 맞다는 결론에 이르게 되었다. 그리고 애플케어에 무조건 가입해서 3년간은 아무 생각없이 써야 한다는 것. 수리 한번 들어가면 15일 넘고 데이터에 대한 보증도 안해주니까 클리우드 사용은 필수.
클라우드는 구글 드라이브가 필수. 드랍박스, 애플,아마존, 구글, 마소 원 드라이브 유료 서비스를 모두 써 보고 내린 결론이다.
구글 드라이브 무제한 유료 클럽(년 18만원)에 관심있는 분은 mynameis@hajunho.com 으로 연락 바란다. 이미 5명이 가입해서 2년 이상 사용 중인데 모두 좋다고 한다.
오래 전 한창 매크로 만들 때 블로그에 실시간 급상승 키워드를 넣을 무작위 포스팅 의뢰를 받았다. 지인이었는데 광고수익이 하루에 많게는 200 넘는다고 했다. 물론, 유저는 쓰레기 정보만 보게 되니까 거절했는데 어차피 지금처럼 막힐거였으면 그냥 할껄 그랬나... 라는 후회가 된다. 그러나 그 당시로 돌아가면 똑같은 선택을 할 것이다. 왜냐면 그 때는 정말 경제적인 고민이 전혀 없었으니까.
작년에는 하기 메일을 받았었다. 이것도 그냥 무시했는데 그 당시 난 애드센스를 하고 있었다. 그러나 최근 애드센스 비슷하게 광고 하자는 식의 글을 볼 때마다 비슷한 생각을 하는 사람은 정말 많다는 느낌이 든다.
난 항상 뿌리를 보려고 노력한다. 눈 앞의 작은 이익이 뒤돌아보면 참 큰 이익이었다는 생각이 들 때가 많다. 이것 뿐 아니라 수천만원 짜리 프로그램도 내가 가지고 있던게 많았는데 그 당시에는 프리랜싱을 할 생각을 왜 안했지 라는 식의 생각...