인터넷 찾아보니. 직접 그림을 그려서 뽐내는(?) 분들이 많이 계시네요. 우와 하는 찬탄사가...


http://www.deviantart.com/ 에서 fan art 또는 tradition art를 browse 해보시면 됩니다.


http://www.deviantart.com/browse/all/traditional/

http://www.deviantart.com/browse/all/traditional/drawings/technical/?order=67108864





좋은 분


http://frompencil2paper.deviantart.com/gallery/







Posted by '김용환'
,



출처 : http://nickcraver.com/blog/2016/02/17/stack-overflow-the-architecture-2016-edition/


윈도우 기반의 서비스로 대용량을 잘 처리하고 있는 아키텍처이다. 필요한 솔루션은 오픈소스(stack exchange 개발자가 리드)로 개발하고 있다.


== 아키텍처

  • 4 Microsoft SQL Servers (new hardware for 2 of them)
  • 11 IIS Web Servers (new hardware)
  • 2 Redis Servers (new hardware)
  • 3 Tag Engine servers (new hardware for 2 of the 3)
  • 3 Elasticsearch servers (same)
  • 4 HAProxy Load Balancers (added 2 to support CloudFlare)
  • 2 Networks (each a Nexus 5596 Core + 2232TM Fabric Extenders, upgraded to 10Gbps everywhere)
  • 2 Fortinet 800C Firewalls (replaced Cisco 5525-X ASAs)
  • 2 Cisco ASR-1001 Routers (replaced Cisco 3945 Routers)
  • 2 Cisco ASR-1001-x Routers (new!)


== IDC 장비 사진

http://imgur.com/a/X1HoY



== 라이브러리

  • Dapper (.Net Core) - High-performance Micro-ORM for ADO.Net
  • StackExchange.Redis - High-performance Redis client
  • MiniProfiler - Lightweight profiler we run on every page (also supports Ruby, Go, and Node)
  • Exceptional - Error logger for SQL, JSON, MySQL, etc.
  • Jil - High-performance JSON (de)serializer
  • Sigil - A .Net CIL generation helper (for when C# isn’t fast enough)
  • NetGain - High-performance websocket server
  • Opserver - Monitoring dashboard polling most systems directly and feeding from Orion, Bosun, or WMI as well.
  • Bosun - Backend monitoring system, written in Go


Posted by '김용환'
,


우리말 사전에 의하면,

최소값이 아니라 최솟값이다.

http://krdic.naver.com/rescript_detail.nhn?seq=6337

http://krdic.naver.com/detail.nhn?docid=37823000


최대값이 아니라 최댓값이다.

http://krdic.naver.com/detail.nhn?docid=37809600

Posted by '김용환'
,


구글이 개발한 성능 관련 모듈


Nginx module for rewriting web pages to reduce latency and bandwidth


http://ngxpagespeed.com/



소스

https://github.com/pagespeed/ngx_pagespeed


ngx_pagespeed speeds up your site and reduces page load time by automatically applying web performance best practices to pages and associated assets (CSS, JavaScript, images) without requiring you to modify your existing content or workflow. Features include:

  • Image optimization: stripping meta-data, dynamic resizing, recompression
  • CSS & JavaScript minification, concatenation, inlining, and outlining
  • Small resource inlining
  • Deferring image and JavaScript loading
  • HTML rewriting
  • Cache lifetime extension
  • and more



Posted by '김용환'
,

electron을 이용하여 web 페이지를 앱으로 만들어주는 어플(nativefier)이 나왔다. 


https://www.npmjs.com/package/nativefier



맥에서 웹을 어플로 실행시킬 수 있다.


npm을 먼저 설치 후, 다음과 같이 진행한다.



$ npm install nativefier -g


$ nativefier "http://map.google.com"

Skipping darwin x64 (output dir already exists, use --overwrite to force)

App built to undefined


$ nativefier --app-name "gmap" "http://map.google.com"

Packaging app for platform darwin x64 using electron v0.36.4

App built to /Users/Samuel/gmap-darwin-x64


$ open  /Users/Samuel/gmap-darwin-x64/gmap.app/


그리고, 구글 맵스 어플은 applications 폴더에도 존재한다. "gmap"으로 검색하면 바로 구글 맵을 실행할 수 있다.




Posted by '김용환'
,





https://www.cs.uic.edu/~jbell/CourseNotes/OperatingSystems/9_VirtualMemory.html의 9.3 copy on write 만

발번역했다.



9.3 Copy-On-Write


  • copy-on-write fork의 아이디어는 자식 프로세스 또는 다른 프로세스가 페이지를 변경할 때까지 부모 프로세스의 페이지를 자식 프로세스로 실제로 복사되지 않아야 한다. 잠시 동안 두 개의 프로세스는 메모리를 공유할 수 있고, 수정해야 할 것들은 따로 페이지를 복사되어야 한다. fork후 자식 프로세스가 종종 exec() 시스템 호출을 즉시 호출되기 때문에 타당한 접근 방식이다.

Figure 9.7 - Before process 1 modifies page C.


Figure 9.8 - After process 1 modifies page C.



  • 수정될 페이지만 copy-on-write 라벨으로 붙여야 한다. 코드 세그먼트는 공유될 수 있다.
  • copy-on-write 복제본을 만족하기 위해 쓰이는 페이지는 기존 데이터를 zero로 처리하는 zero-fill-on-demand를 일반적으로 사용하여 할당한다. 
  • 일부 시스템은 for() 시스템 콜을 virtual memory fork라 불리는 vfork()의 대안으로 제공한다. 부모프로세스가 정지되는 경우, 자식 프로세스는 부모 프로세스의 메모리 페이지를 사용한다. 이 방법을 사용하면 프로세스 생성이 굉장히 빠르지만, exec() 시스템 콜을 호출하기 전, 자식 프로세스는 어떠한 공유된 메모리 페이지를 수정하지 않도록 한다. 본질적으로이 과정은 fork의 호출후 , 부모 프로세스 또는 자식 프로세스 중 어느 프로세스가 먼저 실행되는지에 대한 의문을 다룬다. vfork를 이용하면, 부모 프로세스는 중지되고, 자식 프로세스가 exec() 호출시까지 잠깐 동안 부모 프로세스의 페이지와 공유하면서, 자식 프로세스가 먼저 실행되도록 한다.




Posted by '김용환'
,


동경대 교수가 haptoclone이라는 홀로그램 머신을 만들었다.  동영상을 보면, 대단하다는 생각이 든다. 









출처 

http://www.hapis.k.u-tokyo.ac.jp/?portfolio=haptoclone&lang=en

http://qz.com/584704/japanese-scientists-have-created-a-new-type-of-hologram-that-you-can-actually-feel/



Posted by '김용환'
,


highscalability.com에서 인 메모리 캐쉬 서버(redis(azure redis), couchbas, memcached, tarantool)의 성능을  비교했다. 

결론만 보면, my.com이 만든 tarantool (http://tarantool.org/https://github.com/tarantool/tarantool)이 가장 성능이 좋았다고 한다. 헐..

http://tarantool.org/ 웹페이지 가보면, redis 비교자료가 있으니 참조할 수 있다.


출처 :

http://highscalability.com/blog/2015/12/30/how-to-choose-an-in-memory-nosql-solution-performance-measur.html


Tarantool (HASH), Tarantool (TREE), Redis, Azure Redis Cache, Memcached, CouchBase







Tarantool with both hash and tree indices is the best for all investigated workloads. It creates a lock-free in-memory engine, which does not consist of any mutexes or other concurrency primitives and uses cooperative multitasking. After considering these graphs, we can conclude that high throughput is one of the strengths of the Tarantool database.


Through all tests we executed, Tarantool showed the best result for the count requests per second and for many of tests latency values on any type of examined workloads. Therefore, we can decide that for most of typical projects Tarantool suits them more that popular solutions such as Redis, CouchBase or Memcached. This is the basis of our decision to use Tarantool for our projects here at my.com.


Posted by '김용환'
,

ebay에서 pulsar(http://gopulsar.io/)를 밀고 있다.

(http://www.ebaytechblog.com/2015/02/23/announcing-pulsar-real-time-analytics-at-scale/, http://gopulsar.io/docs/Whitepaper_Pulsar_Real-timeAnalyticsatScale.pdf)


pulsar는 실시간 스트리밍 데이터를 SQL로 처리해주는 라는 실시간 분석 오픈 소스이다. 그런데, 요즘은 commit이 뜸하다.

그러나 pulsar가 쓰는 storage는 druid(https://github.com/druid-io/druid)이다. 


pulsar가 cassandra가 group by를 제공하지 않아서 druid를 사용했다고한다.

게다가  보니까. java로 만든 분산 실시간 처리 저장소이며 cardinality는 hyperloglog를 이용하고 있다.


지켜 볼만한 솔루션이라서 끄적끄적거려봤다. 


Posted by '김용환'
,



* mac 요세미티에서 엘캐피탄으로 업그레이드시 팁

(부제 : rbenv ruby 설치가 안되는 상황 해결하기)


1. mac os 업그레이드시 기존 컴파일된 바이너리가 실행이 되지 않으니, 동작이 되지 않으면, 소스 컴파일된 바이너리를 모두 컴파일시켜 다시 바이너를 만들고 실행시켜야한다. (예, memcached, arcus 등등)


2 . xcode도 업그레이드해야 한다.

rbenv로 ruby 설치시 아래 에러가 발생했다. (시스템 ruby는 잘 설치할 수 있어도 rbenv 기반의 ruby 설치가 안되는 상황이다.)

- couldn't understand kern.osversion `15.0.0'

- configure: error: something wrong with CFLAGS="-g -O2 "



brew config와 brew doctor  실행시 확인해보니, OS X가 10.11 인데, Xcode는 최소 7.0이어야 한다. 


$ brew config 

OS X: 10.11.1-x86_64

Xcode: 6.2


$ brew doctor

Warning: Your Xcode (6.2) is outdated

Please update to Xcode 7.2.

Xcode can be updated from the App Store.


app store에 가서 xcode 업데이트를 진행했다. 

$brew config

OS X: 10.11.1-x86_64

Xcode: 7.1.1



3. apple gcc42 삭제

Xcode 업글해도 ruby를 설치하지 못했다. 이유는 구글로 검색하니 apple-gcc42 문제였고, 이를 삭제했다.


 $ brew uninstall apple-gcc42

Uninstalling /usr/local/Cellar/apple-gcc42/4.2.1-5666.3... (104 files, 75M)


rbenv 기반으로 ruby 설치가 잘 되었다. 




* 중요한 점 -

먼가 잘 안되면, 아래 명령어를 활용하는 게 좋다.

$ brew doctor

$ brew config



Posted by '김용환'
,