background preloader

Technology

Facebook Twitter

Open select box with Javascript? KLDPWiki: 오픈소스 소프트웨어 라이센스 가이드. 오픈소스소프트웨어, 특히 FSF 등 자유소프트웨어(Free Software)진영이 소프트웨어특허에 대해 가지는 시각은 GPL 서문에 잘 나타나 있다. 이에 따르면 현재 소프트웨어특허로 인하여 자유소프트웨어가 끊임없이 위협을 받고 있는 상황이며, 만약 자유소프트웨어의 배포자들이 개별적으로 특허를 취득하는 경우 해당 프로그램이 사유(proprietary)소프트웨어가 될 가능성이 있으므로, FSF는 이러한 문제에 대처하기 위해서 GPL 조건의 소프트웨어를 이용하는 모든 사람들이 무료로 자유롭게 사용할 수 있는 특허만을 자유소프트웨어에 포함시키고자 한다는 것이다. 이와 같은 기본인식에도 불구하고 GPL 2.0에는 특허권에 관한 내용이 짧게 언급되어 있을 뿐인데, 비록 자유소프트웨어진영이 소프트웨어특허에 대해 반대하고 있긴 하지만, 소프트웨어특허의 인정여부는 결국 각국의 입법 또는 법해석에 관한 문제이다. 따라서 GPL의 차원에서는 GPL 조건의 소프트웨어에 관련 특허가 부여되었거나 앞으로 부여될 수 있다는 현실을 받아들일 수밖에 없다. 특허권에 관한 GPL 2.0에서의 내용을 요약하면, 첫째, 특허권자 자신이 특허기술을 구현한 소프트웨어를 GPL로 배포하였다면, GPL 서문이나 제7조의 해석상, GPL 조건을 준수하면서 해당 소프트웨어를 사용하는 이용자에게는 특허권을 주장하지 않겠다는 서약을 한 것으로, 또는 특허라이선스를 묵시적으로 허락한 것으로 해석할 수 있다.

둘째, 소프트웨어에 제3자의 특허기술이 포함된 경우, 특허권자가 모든 GPL 이용자에게 무상의 라이선스를 제공하는 경우에만 해당 소프트웨어를 GPL로 배포할 수 있다. 다시 말해 프로그램의 복제물을 제공받은 임의의 제3자가 해당 프로그램을 무상으로(royalty-free) 사용하거나 재배포할 수 없는 경우, 해당 소프트웨어를 GPL로 배포하는 것은 불가능하다. 이와 같은 특허보복조항의 필요성은 브루스 페렌스 등을 중심으로 오픈소스커뮤니티 내부에서 일찍부터 제기되었었다. PushState 예제 | wani. HTML5 and pushState | Yin Yang Source. Nowadays JavaScript and more particularly AJAX is used in every type of web applications. The asynchronous data loading is great asset of AJAX but it has one drawback, the user can’t use back/forward buttons of the browser to navigate through different states of the page that has been updated through asynchronous methods.

Web page Hash There’s been a solution to the problem, not very elegant, but good for workaround. Many people and developers used to use the hash key to enable users to use the browser navigation buttons. One of the big players on the web scene, Facebook and Twitter, use this approach as well. What is specific in the following examples is that they use hash key in the URL but also they have a separator: “!”

But now with HTML5 raise we have new option and solution for the former problem. HTML5 pushState - pushState - replaceState The only problem is that the pushState is not supported by all browsers. Further reading. Mohwa.Context :: HTML5 PushState()를 활용한 PJAX 구현. HTML5 PushState()를 활용한 PJAX 구현 기존 AJAX 사용 시 이용할 수 없었던 브라우저 뒤로 가기(히스토리 내역을 활용한 기능)기능을 보완하기 위한 방법으로 "location.hash" 를 활용한 Hashbang(hash: # 와 bang: ! 의 합성)기술이 등장 했습니다. 하지만 이 방식은 뒤로 가기 기능은 처리할 수 있지만, 일종의 URL Hack 방식으로, 검색 엔진들로 하여금 인덱싱되지 않는 단점(구글은 해시뱅에 대해 인덱싱이 가능하도록 escape 처리함)을 가지고 있습니다.

또한, 방식 자체가 자바스크립트 기술(ajax)에 크게 의존하고 있기 때문에 스크립트 오류 시 깨지기 쉬운 사이트 구조를 가지게 됩니다. 이번 포스트에서 설명드릴 방식은 HTML5 명세의 PJAX(pushState + ajax)라는 기술이며, 이 기능을 통해 뒤로 가기 기능과 검색 인덱싱 처리를 동시에 보완할 수 있습니다. 하지만 HTML5 명세 기술이므로 모든 브라우저에서 지원하지 않는 단점도 가지고 있습니다. 아래는 PJAX(pushState + ajax)를 구현한(서버 + 클라이언트) 예제 코드이며, 코드에서처럼 전송 방식(ajax, normal)을 분기하여 접근 방식에 따라 사용자에게 다른 결과(컨텐츠)를 보여주게 됩니다. - Ajax 분기 처리에 대한 더 자세한 설명은 아래 포스트 주소를 확인하시기 바랍니다. 1. Public string Pjax1(){ // GET 요청 시 Jquery 및 Prototype과 같은 대표적인 라이브러리에서 ajax 요청을 판단하는 요청 값(X-Requested-With)을 추가하여 요청한다. if ((Request.Headers["X-Requested-With"] ! 2. 3. 가지게 됩니다. 일반 전송 방식에 의한 결과. 참고 사이트: Top 5 Browsers from Jul 2011 to Jul 2012 | StatCounter Global Stats.

Jqeury

Memcached를 적용하여 사이트 성능 향상. Extremely Agile :: 사용자 스토리와 유스케이스. 애자일 소프트웨어 개발. 위키백과, 우리 모두의 백과사전. 애자일 소프트웨어 개발(Agile software development) 혹은 애자일 개발 프로세스는 소프트웨어 엔지니어링에 대한 개념적인 얼개로, 프로젝트의 생명주기동안 반복적인 개발을 촉진한다. 최근에는 애자일 게임 보급 등의 여파로 소프트웨어 엔지니어링 뿐 아니라 다양한 전문 분야에서 실용주의적 사고를 가진 사람들이 애자일 방법론을 적용하려는 시도를 하고 있다. 개념[편집] 애자일 방법론은 소프트웨어 개발 방법에 있어서 아무런 계획이 없는 개발 방법과 계획이 지나치게 많은 개발 방법들 사이에서 타협점을 찾고자 하는 방법론이다. 계획이 없는 방법론의 경우, 앞으로의 일을 예측하기 힘들고 효율적이지 못하다는 점에서 취약점을 가지고 있으며, 계획에 너무 의존하는 경우는 그 형식적인 절차를 따르는데 필요한 시간과 비용을 무시할 수 없으며, 전체적인 개발의 흐름 자체를 느리게 하는 단점을 가지고 있다. 그렇기 때문에 애자일 방법론에서 택한, 그리고 다른 고전적인 방법론, 예를 들면 폭포수 모델 또는 나선 모형과 구별되는 가장 큰 차이점은 less document-oriented, 즉 문서를 통한 개발 방법이 아니라, code-oriented, 실질적인 코딩을 통한 방법론이라는 점이다. 그러므로 애자일 개발 방법론은 계획을 통해서 주도해 나갔던 과거의 방법론과는 다르게 앞을 예측하며 개발을 하지 않고, 일정한 주기를 가지고 끊임없이 프로토 타입을 만들어내며 그때 그때 필요한 요구를 더하고 수정하여 하나의 커다란 소프트웨어를 개발해 나가는 adaptive style 이라고 할 수 있다.

애자일 개발 프로세스란 어느 특정 개발 방법론을 가리키는 말은 아니고 "애자일(Agile=기민한, 좋은것을 빠르고 낭비없게 만드는 것) 개발을 가능하게 해 주는 다양한 방법론 전체를 일컫는 말이다. 개발 배경[편집] 애자일 프로세스의 배경에는 소프트웨어 개발 자체가 다른 공학적인 프로세스와는 큰 차이가 있음을 인지하는 데에서 부터 시작되었다. 종류[편집] GIS 프로그래밍 연구소. 당신은 웹표준 개발자인가? - 나를 찾는 아이. ‘페이스북’ 데이터센터는 어떤 모습일까 [하] ▲페이스북 데이터센터 내의 서버 이는 현재의 클라우드 컴퓨팅에서 적용되는 인프라와 일맥상통합니다. 수많은 사람들이 엄청난 양의 데이터를 저렴한 비용으로 공유하고 사용할 수 있게 하기 위해선 싼 가격의 범용 하드웨어 인프라에 오픈소스 소프트웨어를 활용해 비용을 줄이고, 대신 필요한 컴퓨팅 자원을 보다 쉽게 즉각적으로 늘릴 수 있는 것이 중요하기 때문입니다. 이같은 이유 때문에 헤일링거 부사장은 지난해 초에 있었던 한 기술 컨퍼런스에 참여해 티엘라(Tilera)와 시마이크로(SeaMicro) 등을 ‘주목해야 할 업체’라고 지목하기도 했다고 합니다. 이들 제품의 멀티코어 프로세서가 전력은 적게 먹는 대신, 컴퓨팅 파워가 우수하기 때문이라네요. 페이스북은 최근 모바일칩의 절대 강자인 ARM사의 저젼력의 프로세서를 사용하기 시작한 것으로도 알려졌는데, 이에 대해선 사실이 아니라고 공식적으로 밝힌 바 있습니다.

한편 앞에서도 언급했듯이, 페이스북은 오픈소스 소프트웨어를 사용해 다양한 서비스를 개발한 것으로 유명한데요. 페이스북은 PHP 프로그래밍 언어를 통해 개발됐고, MySQL 데이터베이스를 사용하고 있는데, 페이스북 엔지니어링팀은 ‘힙합(HipHop)’이라 불리는 프로그램을 개발했다고 합니다. 페이스북은 현재 MySQL 데이터베이스 클러스터를 사용하는 가장 큰 회사 중 하나로, 오픈소스 캐싱 시스템인 멤캐쉬드(memcashed)의 가장 큰 사용 그룹이기도 합니다. 지난 2009년 마크 주커버그가 직접 언급했듯이, 멤캐쉬드는 페이스북 서비스에서 웹 애플리케이션의 확장을 향상시켜주는 중요한 수단으로 사용되고 있습니다. 그렇다면 페이스북은 데이터센터 운영에 얼마만큼의 돈을 쓸까요? 패이스북은 2010년 9월 현재 데이터센터 면적을 임대하는 데에만 연평균 5000만 달러(한화로 약 560억원)를 지불한다고 합니다. 이는 2009년 5월 기준 약 2000만 달러 임대 비용에 비해 2배 이상 증가한 수치입니다. 아마도 서버와 스토리지 등 하드웨어 투자 비용까지 포함한다면 어마어마한 수치이지요. Instagram Architecture: 14 Million users, Terabytes of Photos, 100s of Instances, Dozens of Technologies. Instagram is a free photo sharing and social networking service for your iPhone that has been an instant success. Growing to 14 million users in just over a year, they reached 150 million photos in August while amassing several terabytes of photos, and they did this with just 3 Instaneers, all on the Amazon stack.

The Instagram team has written up what can be considered the canonical description of an early stage startup in this era: What Powers Instagram: Hundreds of Instances, Dozens of Technologies. Instagram uses a pastiche of different technologies and strategies. We'll just tl;dr the article here, it's very well written and to the point. Definitely worth reading. Here are the essentials: Lessons learned: 1) Keep it very simple 2) Don’t re-invent the wheel 3) Go with proven and solid technologies when you can.3 Engineers.Amazon shop. Polyglot persistence at Pinterest: Redis, Membase, MySQL. I’ve created the diagram above based on this very brief answer on Quora: We use python + heavily-modified Django at the application layer. Tornado and (very selectively) node.js as web-servers. Memcached and membase / redis for object- and logical-caching, respectively.

RabbitMQ as a message queue. Nginx, HAproxy and Varnish for static-delivery and load-balancing. Data from October 2011 showed Pinterest having over 3 million users generating 400+ million pageviews. What is node.js used for? Original title and link: Polyglot persistence at Pinterest: Redis, Membase, MySQL (NoSQL database©myNoSQL) by Alex Popescu & Ana-Maria Bacalu Most read Latest. Tumblr Architecture - 15 Billion Page Views a Month and Harder to Scale than Twitter. With over 15 billion page views a month Tumblr has become an insanely popular blogging platform. Users may like Tumblr for its simplicity, its beauty, its strong focus on user experience, or its friendly and engaged community, but like it they do. Growing at over 30% a month has not been without challenges.

Some reliability problems among them. It helps to realize that Tumblr operates at surprisingly huge scales: 500 million page views a day, a peak rate of ~40k requests per second, ~3TB of new data to store a day, all running on 1000+ servers. One of the common patterns across successful startups is the perilous chasm crossing from startup to wildly successful startup. Finding people, evolving infrastructures, servicing old infrastructures, while handling huge month over month increases in traffic, all with only four engineers, means you have to make difficult choices about what to work on. This was Tumblr’s situation. Tumblr started as a fairly typical large LAMP application. Stats. A Digest of Evernote’s Architecture (*) | Evernote Tech Blog.

Let’s get things started with a coarse-grained overview of the physical makeup of the Evernote service. I won’t go into a lot of detail on each component here; we’ll aim to talk about the interesting bits in separate posts later. Starting at the top-left corner of the diagram, all stats as of May 17th, 2011 … Networking: Virtually all traffic to and from Evernote comes to www.evernote.com via HTTPS port 443. This includes all “web” activity, but also all client synchronization via our Thrift-based service API.

We use BGP to direct traffic through fully independent network feeds from our primary (NTT) and secondary (Level 3) providers. Shards: The core of the Evernote service is a farm of servers that we call “shards.” Physically, shards are deployed as a pair a SuperMicro boxes with two quad-core Intel processors, a ton of RAM and full chassis of Seagate enterprise drives in mirrored RAID configurations. Wait, but why?