Connected information is everywhere in our world. Neo4j was build to efficiently store, handle and query highly connected elements in your data model. With a powerful and flexible data model you can represent your real-world, variably structured information without a loss of fidelity. The property graph model is easy to understand and handle, especially for object oriented and relational developers.
These guides explores the differences between relational and graph databases and their data models. In addition, we show how to integrate graph databases with relational databases and how to import data from a relational store.
사티아 나델라(Satya Nadella) 마이크로소프트(MS) 최고경영자(CEO)는 2014년 취임 직후 ‘모두를 위한 데이터 문화’를 강조했다. 기업 내 모든 사용자(DBAs, BI 개발자, 비즈니스 유저, 데이터 분석가, 데이터 사이언티스트, C레벨 등)가 직관이 아닌 데이터로 통찰력을 얻어야 하며 각 역할에 적합한 도구가 제공됐을 때 이런 문화가 정착할 수 있다는 것이 나델라 CEO의 메시지의 핵심이다.
학위를 보유한 박사가 알고리즘에 대한 배경지식을 갖췄기 때문에 분석 모델을 더 잘 설명할 수 있겠지만 항상 더 나은 모델을 만든다고는 할 수 없다. 몇 년 전까지만 해도 데이터 과학 분야는 제반 기술이 성숙하지 않고 기술의 난이도도 높아서 일부 전문가를 제외하고 접근하기 어려운 영역이었던 것을 생각하면 상황이 많이 바뀌었다.
빅데이터의 다음 단계, 예측 분석
시장조사 기관 가트너는 빅데이터 분석 영역을 두 부분으로 나눈다. 전통적인 BI(비즈니스 인텔리전스)와 고급 분석이다. BI 영역에서는 과거에 무슨 일이 있었고 왜 일어났는지를 분석한다. 고급 분석 영역에 속한 예측분석은 급변하는 비즈니스 환경에서 지금 무슨 일이 일어나고 있으며 앞으로는 어떨지를 보여준다.
예측 분석을 위해 사용되는 머신러닝이라는 용어 자체는 새로울 것이 없다. 하지만 클라우드, 빅데이터, IoT(사물 인터넷), 인메모리와 같은 제반 기술의 발전에 힘입어 비즈니스 영역에서의 활용 가치가 활발하게 논의되고 있다.
애저 머신러닝(Azure ML)
MS는 각광받고 있는 예측 분석 솔루션으로서의 머신러닝을 ‘기존 데이터를 학습해 미래의 동작, 결과, 추세를 예측하는 모델을 사용하는 컴퓨팅 시스템’으로 설명한다. 머신러닝은 온라인 쇼핑 사이트에서 보는 제품 추천, 신용카드 사용 시 부정행위 검색 등 생활 밀착형 서비스뿐만 아니라 제조 분야에서의 예방 정비와 의료업계의 개인화 서비스, 도시공학에서 교통량 분산까지 다양한 산업분야에서 위력을 발휘하고 있다.
애저 머신러닝은 이렇게 강력한 예측 모델을 신속하게 만들고 분석 솔루션으로 배포할 수 있도록 지원하는 클라우드 기반의 예측 분석 서비스다. 애저 머신러닝의 가장 큰 특징 세 가지를 살펴보겠다.
1. 익숙한 방법으로 예측 모델 생성
고급 분석 영역에서의 도구는 비싼 상업용 소프트웨어나 복잡한 프로그래밍으로 작성해야 하는 R, 파이썬(Python) 등이다. 또 대용량의 데이터를 이용해 모델을 작성하려면 적합한 스토리지와 컴퓨팅 파워가 필요해서 전문가가 아니면 접근하기 어려운 영역이었다.
애저 머신러닝 서비스는 쉽다. 웹 브라우저로 ML 스튜디오(ML Studio)에 접속한 뒤 단순한 데이터 흐름을 통해 모델을 생성할 수 있다. 이미 구현된 R과 파이썬 패키지를 최소한의 수정만으로 애저 머신러닝 내에 통합하는 기능도 있다. 프로그래밍에 익숙지 않은 사용자도 고급 분석을 경험할 수 있도록 샘플 실험을 제공한다. 모든 데이터 과학자의 기술 수준에 맞춘 개발 환경을 제공하는 것이다.
애저 머신러닝에서 제공하는 라이브러리는 핫메일(Hotmail), 빙(Bing), 엑스박스(Xbox), 스카이프(Skype)와 같이 MS 비즈니스에서 이미 검증된 알고리즘으로 이뤄져 있다. 모델 생성 시 제공되는 알고리즘은 가장 많이 쓰이는 기본값으로 설정됐다. 때문에 상세 설정에 대한 고민 없이 모델을 만들고 테스트할 수 있다.
작성된 모델을 누구든 재사용하도록 공유할 수 있다. 한 명의 데이터 과학자가 실험을 하다가 중단한 경우 다른 사용자에게 실험을 공유할 수 있다. 중단된 시점부터 다른 데이터 과학자가 실험을 이어나갈 수 있다. 또는 진행중인 실험을 복사해 다른 데이터 과학자가 사용할 수도 있다. 모델의 완성도를 높이기 위해 다양한 관점의 방안을 제시하는 과정이다.
2. 훈련된 모델을 몇 분 만에 웹 서비스로 배포
기존의 도구로 모델을 성공적으로 만들었다고 해도 실제 운영에 적용해 비즈니스 가치를 창출하는 건 쉬운 일이 아니다. 그래서 애저 머신러닝은 설계부터 응용을 염두에 두고 개발됐다. 이런 모델을 한 번의 클릭만으로 웹 서비스로 배포할 수 있다. 완성된 모델을 몇 분만에 웹 서비스로 배포해 손쉽게 응용 프로그램에 활용될 수 있으므로 상품화하는 데까지의 시간을 획기적으로 단축한다는 의미다.
배포된 웹 서비스는 요구-응답(Request-Response)과 배치 실행(Batch Execution) 두 가지 형태로 사용 가능하다. 요구-응답 서비스는 레코드를 하나씩 받아서 처리하므로 지연이 적고 대규모로 확장 가능한 인터페이스를 제공한다. 배치 실행 서비스는 비동기 방식으로 대용량 데이터의 레코드를 한 번의 배치로 처리한다. 각각의 장점이 있으므로 비즈니스 목적에 맞게 선택해 사용하면 된다.
웹 서비스는 클라우드 포털로 관리할 수 있다. 예를 들면 웹 서비스를 실행 가능한 두 가지 형태로 테스트할 수 있는 UI를 제공하고 접근을 위한 키를 관리하거나 요구 사항이 바뀌었을 때 솔루션을 업데이트하고 변경 뒤 배포된 웹 서비스를 운영 모드로 전환하는 작업 등을 웹 브라우저에서 수행 가능하다.
3. 만들어진 솔루션을 세계로 확대
다양한 실험을 거쳐 완성한 솔루션은 생태계에서 사용할만한 가치가 있다. 클릭 한 번으로 솔루션을 애저 머신러닝 갤러리에 공유하면 된다. 커뮤니티 멤버의 성공에 기여할 수도 있고 다른 데이터 과학자가 더 나은 솔루션으로 발전하도록 지원할 수도 있다. 완성도가 높고 상업적 가치가 있는 솔루션은 애저 마켓플레이스에 게시해 가격을 책정하면 세계 사용자를 상대로 당장 수익을 낼 수도 있다.
The way your web content behaves on mobile can be dramatically different from the desktop experience. Remote debugging with Chrome DevTools lets you debug live content on your Android device from your development machine.
Note: Remote debugging requires your version of desktop Chrome to be newer than the version of Chrome for Android on your device. For best results, useChrome Canary(Mac/Windows) or the ChromeDev channelrelease (Linux) on desktop.
If at any time you encounter problems with remote debugging, refer to theTroubleshootingsection.
Setting up your Android device
Follow these instructions to set up your Android device for remote debugging.
1. Enable USB debugging
On your Android device, selectSettings > Developer options.
Note: OnAndroid 4.2and later, the developer options are hidden by default. To enable the developer options, selectSettings > About phoneand tapBuild numberseven times.
An alert prompts you to allow USB debugging. TapOK.
2. Connect your device
Connect the Android device to your development machine using a USB cable.
Note: If you are developing onWindows, install the appropriate USB driver for your device. SeeOEM USB Driverson the Android Developers' site.
Discovering devices in Chrome
After setting up remote debugging on Android, discover your device in Chrome.
On your desktop Chrome browser, navigate tochrome://inspect. Confirm thatDiscover USB devicesis checked:
On your device, an alert prompts you to allow USB debugging from your computer. TapOK.
The messageUSB debugging connecteddisplays in the device's notification drawer.
Note: During remote debugging, Chrome prevents your device’s screen from going to sleep. This feature is useful for debugging, but is also less secure. So be sure to keep an eye on your device!
On your computer, thechrome://inspectpage displays every connected device, along with its open tabs and debug-enabled WebViews.
If you have problems finding your device on thechrome://inspect page, see theTroubleshootingsection.
Debugging remote browser tabs
From thechrome://inspect page, you can launch DevTools and debug your remote browser tabs.
To start debugging, clickinspectbelow the browser tab you want to debug.
A new instance of Chrome DevTools launches on your computer. From this instance, you can interact with the selected browser tab on your device in real time.
For example, you can use DevTools to inspect web page elements on your device:
When you mouse over an element in theElementspanel, DevTools highlights the element on your device.
You can also click theInspect Elementicon in DevTools and tap your device screen. DevTools highlights the tapped element in theElementspanel.
Note: The version of Chrome on your device determines the version of DevTools used during remote debugging. For this reason, the remote debugging DevTools might differ from the version that you normally use.
Debugging tips
Here are a few tips to help get you started with remote debugging:
UseF5(orCmd+ron Mac) to reload a remote page from the DevTools window.
Keep the device on a cellular network. Use theNetworkpanelto view the network waterfall under actual mobile conditions.
Use theTimelinepanelto analyze rendering and CPU usage. Hardware on mobile devices often runs much slower than on your development machine.
On Android 4.4 (KitKat) or later, you can use DevTools to debug WebView content in native Android applications.
Configure WebViews for debugging
WebView debugging must be enabled from within your application. To enable WebView debugging, call the static methodsetWebContentsDebuggingEnabledon the WebView class.
This setting applies to all of the application's WebViews.
Tip: WebView debugging isnotaffected by the state of thedebuggableflag in the application's manifest. If you want to enable WebView debugging only whendebuggableistrue, test the flag at runtime.
Thechrome://inspectpage displays a list of debug-enabled WebViews on your device.
To start debugging, clickinspectbelow the WebView you want to debug. Use DevTools as you would for aremote browser tab.
The gray graphics listed with the WebView represent its size and position relative to the device's screen. If your WebViews have titles set, the titles are listed as well.
Live screencasting
Shifting your attention between screens isn’t always convenient. Screencast displays your device's screen right alongside DevTools on your development machine. You can interact with the content on your device from the screencast too.
As of KitKat 4.4.3, screencast is available for both browser tabs and Android WebViews.
Start a screencast session
To start screencasting, click theScreencasticon in the upper right corner of your remote debugging DevTools window.
TheScreencastpanel opens on the left and displays a live view of your device's screen.
Screencast only displays page content. Transparent portions of the screencast are covered by the omnibox, device keyboard, and other device interfaces.
Note: Because screencast continuously captures frames, it has some performance overhead. If your tests are sensitive to frame rate, disable screencast.
Interact with your device using the screencast
When you interact with the screencast, clicks are translated into taps, firing proper touch events on the device. Keystrokes from your computer are sent to the device, so you can avoid typing with your thumbs.
Other DevTools work with the screencast too. For example, to inspect an element, click theInspect Elementicon and then click inside the screencast.
Tips: To simulate a pinch gesture, holdShiftwhile dragging. To scroll, use your trackpad or mouse wheel or fling with your pointer.
Port forwarding
Your phone can't always reach the content on your development server. They might be on different networks. Moreover, you might be developing on a restricted corporate network.
Port forwarding on Chrome for Android makes it easy to test your development site on mobile. It works by creating a listening TCP port on your mobile device that maps to a particular TCP port on your development machine. Traffic between these ports travels through USB, so the connection doesn't depend on your network configuration.
To enable port forwarding:
Openchrome://inspecton your development machine.
ClickPort Forwarding. The port forwarding settings display.
In theDevice portfield, enter the port number you want your Android device to listen on. (The default port is 8080.)
In theHostfield, enter the IP address (or hostname) and port number where your web application is running. This address can be any local location accessible from your development machine. Currently, port numbers must be between 1024 and 32767 (inclusive).
CheckEnable port forwarding.
ClickDone.
The port status indicators onchrome://inspectare green when port forwarding is successful.
Now you can open a new Chrome for Android tab and view the content of your local server on your device.
Virtual host mapping
Port forwarding works great when you're developing onlocalhost. But there are cases when you might be using a customized local domain.
For example, suppose you're using a third party JavaScript SDK that only works on whitelisted domains. So you added an entry, such as127.0.0.1 production.com, to yourhosts file. Or maybe you configured a customized domain using virtual hosts on your web server (MAMP).
If you want your phone to reach content on your customized domain, you can use port forwarding in combination with a proxy server. The proxy maps requests from your device to the correct location on the host machine.
Set up port forwarding to a proxy
Virtual host mapping requires you to run a proxy server on the host machine. All requests from your Android device will be forwarded to the proxy.
To set up port forwarding to a proxy:
On the host machine, install proxy software such asCharles Proxy(free trial available) orSquid.
Run the proxy server and note the port that it's using.
Note: The proxy server and your development server must be running on different ports.
In a Chrome browser, navigate tochrome://inspect.
ClickPort forwarding. The port forwarding settings display.
In theDevice portfield, enter the port number that you want your Android device to listen on. Use a port that Android allows, such as9000.
In theHostfield, enterlocalhost:xxxx, wherexxxxis the port your proxy is running on.
CheckEnable port forwarding.
ClickDone.
The proxy on the host machine is set up to make requests on behalf of your Android device.
Configure proxy settings on your device
Your Android device needs to communicate with the proxy on the host machine.
To configure the proxy settings on your device:
SelectSettings > Wi-Fi.
Long-press the network that you are currently connected to.
Note: Proxy settings apply per network.
TapModify network.
SelectAdvanced options. The proxy settings display.
Tap theProxymenu and selectManual.
In theProxy hostnamefield, enterlocalhost.
In theProxy portfield, enter9000.
TapSave.
With these settings, your device forwards all of its requests to the proxy on the host machine. The proxy makes requests on behalf of your device, so requests to your customized local domain are properly resolved.
Now you can load local domains on Chrome for Android just as you would on the host machine.
Tip: To resume normal browsing, remember to revert the proxy settings on your device after you disconnect from the host.
Troubleshooting
I can't see my device on thechrome://inspect page.
If you are developing onWindows, verify that the appropriate USB driver for your device is installed. SeeOEM USB Driverson the Android Developers' site.
Verify that the device is connected directly to your machine, bypassing any hubs.
Verify thatUSB debuggingis enabled on your device. Remember to accept the USB debugging permission alerts on your device.
On your desktop browser, navigate tochrome://inspectand verify thatDiscover USB devicesis checked.
Remote debugging requires your version of desktop Chrome to be newer than the version of Chrome for Android on your device. Try usingChrome Canary(Mac/Windows) or the ChromeDev channelrelease (Linux) on desktop.
If you still can't see your device, unplug it. On your device, selectSettings > Developer options. TapRevoke USB debugging authorizations. Then, retry thedevice setupanddiscovery processes.
I can't see my browser tabs on thechrome://inspectpage.
On your device, open the Chrome browser and navigate to the web page you want to debug. Then, refresh thechrome://inspectpage.
I can't see my WebViews on thechrome://inspect page.
On your device, open the app with the WebView you want to debug. Then, refresh thechrome://inspectpage.
I can't access my web server from my Android device.
If network restrictions prevent your mobile device from accessing your development server, try enablingport forwardingor setting up avirtual host map.
Lastly, if remote debugging still isn't working, you can revert to thelegacy workflowusing theadbbinary from the Android SDK.
Additional information
Remote debugging and ADB
You no longer need to configureADBor the ADB plugin to debug remote browser tabs and WebViews. Remote debugging for Android is now part of the standard Chrome DevTools. It works on all operating systems: Windows, Mac, Linux, and Chrome OS.
If you do encounter problems with remote debugging, you can try thelegacy workflowusing theadbbinary from the Android SDK.
Note: The direct USB connection between Chrome and the device might interrupt youradbconnection. Before establishing youradbconnection, uncheckDiscover USB devicesonchrome://inspect. Then, disconnect and reconnect the device.
Remote debugging for DevTools extension developers
필수 요소입니다. 열려는 문서의 경로 및 파일 이름입니다. link_location은 Excel 워크시트나 통합 문서의 특정 셀이나 이름이 지정된 범위와 같은 문서의 특정 위치 또는 Microsoft Word 문서의 책갈피 등 문서 내의 위치를 참조할 수 있습니다. 경로는 하드 디스크 드라이브에 저장되어 있는 파일에 대한 경로일 수도 있고, 서버상의 UNC(Universal Naming Convention) 경로일 수도 있으며, 인터넷 또는 인트라넷상의 URL(Uniform Resource Locator) 경로일 수도 있습니다.
참고 Excel Online에서는 HYPERLINK 함수를 웹 주소(URL)에만 사용할 수 있습니다. link_location은 따옴표로 묶은 텍스트 문자열 또는 텍스트 문자열 형식의 링크를 포함하는 셀에 대한 참조가 될 수 있습니다.
link_location에 지정된 이동 대상이 존재하지 않거나 제대로 작동하지 않는 경우 해당 셀을 클릭하면 오류가 발생합니다.
friendly_name
선택 요소입니다. 셀에 표시되는 이동 텍스트 또는 숫자 값입니다. friendly_name은 밑줄이 그어진 파란색으로 표시됩니다. friendly_name을 생략하면 link_location이 이동 텍스트로 셀에 표시됩니다.
friendly_name은 값, 텍스트 문자열, 이름, 이동 텍스트나 값을 포함하는 셀 등이 될 수 있습니다.
friendly_name이 오류값(예: #VALUE!)을 반환하면 셀에 이동 텍스트 대신 오류값이 표시됩니다.
The iPad has finally launched in Australia today, hooray! I will probably get one soon so I can continue to optimise my CSS layouts for as many devices as possible. But in the mean-time I will continue using the iPad emulator that comes with the iPhone SDK.
To celebrate the launch of the iPad I have built a special iPad optimised website layout that uses pure CSS to change layouts in the portrait and landscape orientation modes. The layout can be downloaded for free at the bottom of this article or from my iPad demo page. Here is a basic diagram of how the two orientations look:
In Landscape mode the layout is in two columns. The main content is in a wide left column and three side sections are stacked vertically in a narrow right column. When you rotate the iPad to the portrait orientation the layout changes to a single column design. In portrait mode the main content fills the full width of the screen and the three side content areas are positioned horizontally as three columns under the main content.
In both orientations there is a header at the top and a footer at the bottom. These both change in width from 1024 pixels wide in landscape, and 768 pixels wide in portrait. See my demo page for a more detailed diagram with pixel dimensions. Below are screenshots of my demo layout in the iPad emulator:
How does it work?
The first thing I do is lock the layout's resolution to a 1:1 ratio so that each pixel exactly lines up with the pixels in the iPad's screen. I do this with the following META tag:
Locking the layout to a 1:1 ratio will prevent the zooming-in and out that normally occurs when the iPad is rotated (normally, landscape mode is more zoomed-in because the width of the webpage is displayed across 1024 pixels, as opposed to portrait mode when there are only 768 pixels available).
Next I combine this with some CSS rules that change the layout in portrait and landscape modes. I do this by writing all my landscape styles normally then overwriting some of them with the @media rule at the bottom of the CSS file when the device is in portrait mode. Here is a cut-down version of the CSS:
/*normal styles here */ #wrap { width:1024px; } @media only screen and (orientation:portrait){ /* portrait styles here */ #wrap { width:768px; } }
The method above works beautifully for changing the layout for the two orientations without JavaScript. Check out my iPad layout demo or download the demo files and try it for yourself.