My slides for understanding Pentesting for GraphQL Applications. I presented this content at c0c0n and bSides Delhi 2018. Also contains details of my Burp Extension for GraphQL parsing and scanning located here https://github.com/br3akp0int/GQLParser
Presentation on "An Introduction to ReactJS"Flipkart
The PowerPoint presentation titled "An Introduction to ReactJS" provides a beginner-friendly overview of ReactJS, a popular JavaScript library used for building user interfaces. This presentation aims to introduce ReactJS to individuals who may not have prior technical knowledge or experience with web development.
The presentation begins with a brief introduction to ReactJS, explaining that it is a JavaScript library created by Facebook for building interactive and dynamic user interfaces. It highlights ReactJS's key features, such as component-based architecture and virtual DOM.
Next, the presentation focuses on the benefits of using ReactJS. It explains that ReactJS enhances the user experience by enabling the creation of highly responsive and efficient web applications. It emphasizes React's ability to manage complex UI components and handle data updates seamlessly.
To make the concept more relatable, the presentation provides real-world examples of popular websites and applications that use ReactJS. This helps the audience understand how ReactJS is implemented in real-world scenarios and its impact on user interface development.
Furthermore, the presentation covers the basic concepts of ReactJS, such as components, props, and state. It explains that ReactJS follows a modular approach, where the UI is divided into reusable components, making it easier to manage and update the application. It also gives a high-level overview of how props and state are used to manage data flow within React components.
Throughout the presentation, visual aids such as diagrams, screenshots, and simple illustrations are used to enhance understanding and engage the audience. The focus is on simplifying complex concepts and making them accessible to non-technical individuals.
Finally, the presentation concludes by highlighting the vast community support and resources available for learning ReactJS. It encourages the audience to explore further and provides recommendations for online tutorials, documentation, and learning platforms.
Overall, the "An Introduction to ReactJS" PowerPoint presentation aims to provide a non-technical audience with a basic understanding of ReactJS, its benefits, and its relevance in modern web development.
My slides for understanding Pentesting for GraphQL Applications. I presented this content at c0c0n and bSides Delhi 2018. Also contains details of my Burp Extension for GraphQL parsing and scanning located here https://github.com/br3akp0int/GQLParser
Presentation on "An Introduction to ReactJS"Flipkart
The PowerPoint presentation titled "An Introduction to ReactJS" provides a beginner-friendly overview of ReactJS, a popular JavaScript library used for building user interfaces. This presentation aims to introduce ReactJS to individuals who may not have prior technical knowledge or experience with web development.
The presentation begins with a brief introduction to ReactJS, explaining that it is a JavaScript library created by Facebook for building interactive and dynamic user interfaces. It highlights ReactJS's key features, such as component-based architecture and virtual DOM.
Next, the presentation focuses on the benefits of using ReactJS. It explains that ReactJS enhances the user experience by enabling the creation of highly responsive and efficient web applications. It emphasizes React's ability to manage complex UI components and handle data updates seamlessly.
To make the concept more relatable, the presentation provides real-world examples of popular websites and applications that use ReactJS. This helps the audience understand how ReactJS is implemented in real-world scenarios and its impact on user interface development.
Furthermore, the presentation covers the basic concepts of ReactJS, such as components, props, and state. It explains that ReactJS follows a modular approach, where the UI is divided into reusable components, making it easier to manage and update the application. It also gives a high-level overview of how props and state are used to manage data flow within React components.
Throughout the presentation, visual aids such as diagrams, screenshots, and simple illustrations are used to enhance understanding and engage the audience. The focus is on simplifying complex concepts and making them accessible to non-technical individuals.
Finally, the presentation concludes by highlighting the vast community support and resources available for learning ReactJS. It encourages the audience to explore further and provides recommendations for online tutorials, documentation, and learning platforms.
Overall, the "An Introduction to ReactJS" PowerPoint presentation aims to provide a non-technical audience with a basic understanding of ReactJS, its benefits, and its relevance in modern web development.
Building Web Apps with WebAssembly and BlazorAmir Zuker
WebAssembly, the final frontier. These are the voyages of the web developer. Its continuing mission: to explore strange new worlds, to seek out new technologies and new platforms, to boldly go where no one has gone before.
Yes indeed! with Wasm, JavaScript is no longer the only practical runtime language of choice.
Enter Blazor WebAssembly! It enables you to write complete web apps over open web standards in.. well.. C#!
This slide deck covers both WebAssembly and Blazor. It can help if you wonder how WebAssembly can change how we build software, how you can do that, how it should look like
This presentation gives an introduction and high level overview to web development with WebAssembly (WASM). At the time of this presentation WebAssembly had been recently released in all the major browsers for production. The presentation was given during a Chicago Ruby session for developers.
PHP is the most commonly used server-side programming and deployed more than 80% in web server all over the world. However, PHP is a 'grown' language rather than deliberately engineered, making writing insecure PHP applications far too easy and common. If you want to use PHP securely, then you should be aware of all its pitfalls.
This Next.js slide is for the short introduction.
Next.js is a react framework for projection. Some people call it as a full stack react framework. Because we can write both client and server side code on it.
The Apache Sling Generic Validation Framework is a prototype implementation capable of verifying the integrity of Resources or of any object capable of being adapted to a ValueMap (e.g. requests).
Half day workshop slides that have been presented at Computer Measurement Group for the last few years, and at Usenix 08 and LISA 08. This version is what will be presented at Usenix 09, San Diego, June 16th, along with the Solaris/Linux Performance slide deck.
유용하(indy.jones) / kakao corp.(톡메시징파트)
---
JVM 기반 언어의 코틀린은 자바의 생태계와 완전히 호환되면서도 간결하고 안전한 코드를 위한 문법을 가진 언어다. 이런 장점으로 최근 안드로이드를 중심으로 점차 자바를 대체해 가고 있지만, 아직 안정성과 성능에 보수적인 서버 분야에서 자바의 지위는 견고해 보인다. 하지만 기존의 자바 기반 프레임웍과도 완벽히 호환되는 코틀린은 서버사이드에서도 도입하지 않을 이유가 없으며 성공적인 도입 사례가 늘어날수록 그 추세는 가속화될 것이다. 현재 카카오톡의 일부 서버들도 코틀린으로 개발되어 대량의 요청을 안정적으로 서비스하고 있고 그 영역은 점점 늘어나고 있다. 이 세션에서는 다양한 서버 분야의 코틀린 도입에 도움이 될 만한 카카오톡 서버의 코틀린 적용 경험을 공유한다.
Query Analyzing
Introduction into indexes
Indexes In Mongo
Managing indexes in MongoDB
Using index to sort query results.
When should I use indexes.
When should we avoid using indexes.
Testing RESTful Webservices using the REST-assured frameworkMicha Kops
The REST-assured framework and its features explained by example.
For detailed information please take a look at my full tutorial including the sources at http://www.hascode.com/2011/10/testing-restful-web-services-made-easy-using-the-rest-assured-framework/
Building Web Apps with WebAssembly and BlazorAmir Zuker
WebAssembly, the final frontier. These are the voyages of the web developer. Its continuing mission: to explore strange new worlds, to seek out new technologies and new platforms, to boldly go where no one has gone before.
Yes indeed! with Wasm, JavaScript is no longer the only practical runtime language of choice.
Enter Blazor WebAssembly! It enables you to write complete web apps over open web standards in.. well.. C#!
This slide deck covers both WebAssembly and Blazor. It can help if you wonder how WebAssembly can change how we build software, how you can do that, how it should look like
This presentation gives an introduction and high level overview to web development with WebAssembly (WASM). At the time of this presentation WebAssembly had been recently released in all the major browsers for production. The presentation was given during a Chicago Ruby session for developers.
PHP is the most commonly used server-side programming and deployed more than 80% in web server all over the world. However, PHP is a 'grown' language rather than deliberately engineered, making writing insecure PHP applications far too easy and common. If you want to use PHP securely, then you should be aware of all its pitfalls.
This Next.js slide is for the short introduction.
Next.js is a react framework for projection. Some people call it as a full stack react framework. Because we can write both client and server side code on it.
The Apache Sling Generic Validation Framework is a prototype implementation capable of verifying the integrity of Resources or of any object capable of being adapted to a ValueMap (e.g. requests).
Half day workshop slides that have been presented at Computer Measurement Group for the last few years, and at Usenix 08 and LISA 08. This version is what will be presented at Usenix 09, San Diego, June 16th, along with the Solaris/Linux Performance slide deck.
유용하(indy.jones) / kakao corp.(톡메시징파트)
---
JVM 기반 언어의 코틀린은 자바의 생태계와 완전히 호환되면서도 간결하고 안전한 코드를 위한 문법을 가진 언어다. 이런 장점으로 최근 안드로이드를 중심으로 점차 자바를 대체해 가고 있지만, 아직 안정성과 성능에 보수적인 서버 분야에서 자바의 지위는 견고해 보인다. 하지만 기존의 자바 기반 프레임웍과도 완벽히 호환되는 코틀린은 서버사이드에서도 도입하지 않을 이유가 없으며 성공적인 도입 사례가 늘어날수록 그 추세는 가속화될 것이다. 현재 카카오톡의 일부 서버들도 코틀린으로 개발되어 대량의 요청을 안정적으로 서비스하고 있고 그 영역은 점점 늘어나고 있다. 이 세션에서는 다양한 서버 분야의 코틀린 도입에 도움이 될 만한 카카오톡 서버의 코틀린 적용 경험을 공유한다.
Query Analyzing
Introduction into indexes
Indexes In Mongo
Managing indexes in MongoDB
Using index to sort query results.
When should I use indexes.
When should we avoid using indexes.
Testing RESTful Webservices using the REST-assured frameworkMicha Kops
The REST-assured framework and its features explained by example.
For detailed information please take a look at my full tutorial including the sources at http://www.hascode.com/2011/10/testing-restful-web-services-made-easy-using-the-rest-assured-framework/
드랍박스, nDrive 등과 같은 클라우드 스토리지 서비스들은 데이터를 어떻게 저장하는지에 대한 이론적 내용과 실제 구현 내용을 살펴봅니다. 이 발표에서는 OpenStack 의 swift라는 Object Storage 를 이용하여 이론이 어떻게 구현되어있는지 알아봅니다.
11. 락의 문제
• 스레드 경합이 없는 단일 스레드에서 락을 얻고 반납하는 일은 부하다.
• 락을 얻지 못하고 대기 해야하는 스레드가 많아지면 스레드 전환에 들어가는 비용
이 많아진다.
• 락은 다양한 활동성 문제(데드락, 라이브락, 소모)를 일으킬 수 있다.
12. 자바 병렬 프로그래밍
‘병렬 알고리즘과 관련한 최근 연구 결과를 보면 대부분이
넌블로킹 알고리즘, 즉 여러 스레드가 동작하는 환경에서
데이터의 안정성을 보장하는 방법으로 락을 사용하는
대신 저수준의 하드웨어에서 제공하는
비교 후 교환 등의 명령을 사용하는 알고리즘을 다루고 있다.’
13. 병렬 연산을 위한 하드웨어적인 지원
• 현대 프로세서는 CAS(Compare-and-swap) 연산을 제공한다.
• x86의 CMPXCHG instruction (ex. CMPXCHG r/m8,r8)
• CAS 연산은 값을 변경하기 위해 기존 값과 새 값을 하나의 명령어로 수행한다.
• 만약 기존 값이 변경 하려는 값과 같으면 새 값으로 바꾼다.
• CAS count, 1, 2 ( 기존 값이 1이면 2로 바꾼다. 그렇지 않으면 아무일도 하지
않는다.)
• 스레드 경쟁이 없다면 CAS 연산은 락을 사용하는 연산 보다 2배 빠르다.
- 자바 병렬 프로그래밍 15장
• 자바는 java.util.Concurrent.atomic 패키지에 AtomicXxx 클래스에서 CAS연산
을 지원한다.
• C는 <stdatomic.h>에서 지원한다.
14. Atomic 클래스를 사용한 넌블로킹 Counter
newValue를 쓰려고 했는데
누군가 값을 바꿔 oldValue와 다르면 false!
그럼 다시 oldValue를 읽어서 시도한다.
15. 락과 넌블로킹 성능 비교
1. 스래드 경쟁이 심한 경우
Lock > Atomic
2. 스래드 경쟁이 일반 적인 경우
Lock < Atomic
21. 자바 병렬 프로그래밍
‘병렬 알고리즘과 관련한 최근 연구 결과를 보면 대부분이
넌블로킹 알고리즘, 즉 여러 스레드가 동작하는 환경에서
데이터의 안정성을 보장하는 방법으로
락을 사용하는 대신 …’
22. MVCC (Multiversion connurrency control)
• Multiversion concurrency control (MCC or MVCC), is a concurrency control
method commonly used by database management systems to provide
concurrent access to the database and in programming languages to
implement transactional memory.
…
MVCC provides point in time consistent views. Read transactions under
MVCC typically use a timestamp or transaction ID to determine what state
of the DB to read, and read these versions of the data. Read and write
transactions are thus isolated from each other without any need for
locking. Writes create a newer version, while concurrent reads access the
older version.
• 구현이 힘들어 자바 예제는 생략합니다. ㅜㅠ
23. • 클로저 Ref는 STM을 이용한 MVCC 방식의 트랜잭션 기능
• 예제
• checking 계좌에 1만원
• savings 계좌에 2만원
• checking 계좌에서 savings 계좌로 100원씩 100번 1만원 보낸다.
• savings 계좌에서 checking 계좌로 200원씩 100번 2만원 보낸다.
• 결국 savings 계좌에서 checking 계좌로 1만원 보낸다.
클로저 Ref 예제
27. Latch를 이용한 스레드 동기화
• java.util.concurrent 패키지에 Latch 지원 클래스가 있다.
• 예제
• Worker1은 1초에 한번씩 10회 화면에 횟수를 출력한다.
• Worker2는 기다렸다가 Worker1이 5회가 되면 1초에 한번씩 10회 화면에 횟
수를 출력한다.
• Worker1과 Worker2는 동시에 시작하지만 Worker2는 Worker1이 5회가 될
때까지 기다려야 한다.
31. Future를 이용한 스레드 동기화
• java.util.concurrent 패키지에 Future 관련 클래스가 있다.
• 예제
• Worker1은 0부터 9까지 합을 구한다.
• Worker2는 기다렸다가 Worker1의 결과에 0부터 9까지 합을 더한다.
• Worker1과 Worker2는 동시에 시작하지만 Worker2는 Worker1이 결과를 줄
때까지 기다린다.
44. core.async
• 신비스러운 Go 루틴 스레드 풀에서 가져온 스레드에서
채널에 값이 들어오길 기다리는
이벤트 핸들러를 만들고 스레드 종료
채널에 값이 들어오면
스레드 풀에서 스레드를 가져와
x에 값을 설정하고
다시 채널에 값이 들어오길 기다리는
이벤트 핸들러를 만들고 스레드 종료채널에 값이 들어오면
스레드를 풀에서 가져와서
y에 값을 설정하고 x와 y를
더한 값을 출력하고 스레드 종료
45. core.async
• 논블록킹 방식으로 주어진 웹 페이지의 단어 수 세기
넌블로킹과 순차흐름의 장점을 모두 가질 수 있다.
대기하는 동안 스레드를 점유하지 않기 때문에 적은 리소스를
사용하는 효율적인 코드를 작성할 수 있다.
46. 아쉽지만 능력 부족으로 다루지 못한 내용
• 함수형 프로그래밍과 동시성
• pmap, reducer, transducer … & Rx
• Functional Reactive Programing
• CSP
47. 결론으로 가는 중
• 저수준 언어에서 제공하는 스레드와 락 같은 기본 동시성 기능은
요즘 같은 멀티 코어 환경에서 많은 노력을 해야 재대로 코드를 작성할 수 있다.
• java.concurrent 패키지 처럼 동시성 관련 라이브러리를 사용하는 것이 좋다.
• 하지만 언어의 기본 기능으로 제공되는 편리한 스레드와 락의 유혹에서 벗어나기
어렵다.
• 현대 프로그래밍 언어들을 기본 언어 기능으로 훌륭한 동시성 기능을 제공한다.
48. 진짜 결론
• 1958년에 고안된 Lisp(클로저)은 저수준 언어인가?
• 라이브러리를 사용하는 것보다 언어에서 제공해야 하는 것이 아닌가?
• Lisp의 s-expression은 시대를 초월한다.