728x90
교육과정을 알면 독학을 하더라도 방향을 알기 쉽다.


교육쿼리큘럼

Windows 2003 Server
Microsoft 社의 운영체제인 Windows Server 2003 Enterprise Edition을 활용하여 Network Infra 및 각종 서버를 구현하는 교육과정으로 이 과정을 수료 후 Windows Server 2003 제품군을 사용하여 Enterprise Network 운영 방안을 제시한다.
교육쿼리큘럼
ㆍO.T , MCP 인증에 대해서 VMWARE 를 이용한 Windows Server 2003 Lab 구성
사용자 계정, 컴퓨터 계정, 그룹 관리 1
ㆍ사용자 계정, 컴퓨터 계정, 그룹 관리
ㆍ자원 액세스 관리 1
ㆍ자원 액세스 관리 2
ㆍPrint 관리 및 구현
관리 템플릿 및 감사 정책 구현
ㆍServer 관리 지원
ㆍServer 성능 모니터링 구현
Data Storage 관리
Disaster Recovery(재난복구) 관리
Windows Server Update Services를 이용한 Software 관리
Client IP Address 구성 ?? Dynamic Host Configuration Protocol (DHCP) 이용하여 IP Address 자동 할당 1
Dynamic Host Configuration Protocol (DHCP) 이용하여 IP Address 자동 할당 2
Client 이름 확인 구성
ㆍDomain Name System (DNS)를 이용하여 Host Names 확인 1
ㆍDomain Name System (DNS)를 이용하여 Host Names 확인 2
ㆍWindows Internet Name Service (WINS)를 이용하여 NetBIOS Names 확인 1
Windows Internet Name Service (WINS)를 이용하여 NetBIOS Names 확인 2
학과정리 및 관련 MCP 시험 문제 풀이


Linux admin1+LPIC level
리눅스(Linux)기반의 서버운영체계 교육으로 리눅스상의 네트워크 TCP/IP 보안 및 아파치 및 삼바서버 구축 및 실습 수업으로 현업에서의 요구를 반영하여 바로 실무에 투입될 수 있는 역량을 배양하는 과정입니다.
교육쿼리큘럼
ㆍ리눅스 역사 및 특징, 설치방법, 배포판 종류
ㆍ리눅스 설치, 하드디스크 파티션, 부팅관리자 LILO에 대한 이해
ㆍ리눅스 기본 명령어, 디렉토리관련 명령어, 파일의 복사
ㆍvi 편집기의 사용, RPM Package의 설치 및 관리
ㆍ X-윈도우 설정, 윈도우 관리자, 응용프로그램 사용법
ㆍ 네트워크 개념 TCP/IP 설정과 네트워크 진단 명령어 사용법
ㆍ telnet 서비스, ftp 서버 구축
ㆍ 파일 시스템에 대한 이해, 네트워크 파일 시스템(NFS) 구축
ㆍ smtp/pop3에 대한 이해, 메일서버 구축(Sendmail)
ㆍ DNS개념, DNS 동작방식, 도메인 네임 서비스(DNS) 구축
ㆍ 웹서버 Apache 구축, 아파치 환경 설정, 웹서버 관리
ㆍ 가상호스트 및 접근제어, 방화벽
ㆍ 리눅스를 이용한 TCP/IP 개념이해 및 네트웍설정.
ㆍ 리눅스를 이용한 가상 IP서버 셋팅연습.
ㆍ 서버 데몬 관리와 APM
ㆍ 기본프로세서와 데몬의 이해, 아파치[APACHE],
ㆍ MY-SQL, PHP 등을 이용한 아파치 웹서버(WEB-SERVER)
ㆍ DNS-SERVER와 MAIL[메일서버] 구축
ㆍ 네임서버 구축의 이해 및 SENDMAIL &IMAP을 이용한 메일서버 구축
ㆍ FTP[서버구축]과 웹서버 운영
ㆍ 가상 FTP서버 구축 및 서버 동기화를 이용한 데이터 백업연습.
ㆍ SAMBA-SERVER[삼바서버] 셋팅연습
ㆍ 삼바서버 셋팅연습을 통한 다중 O/S의 파일 및 프린터 / 공유연습
ㆍ 오라클 8i 셋팅 및 SQL+를 이용한 테이블작성 및 타 데이터
ㆍ 베이스와의 자료 입출력 연습.


Linux admin2 + Security+
리눅스(Linux)기반의 서버운영체계 교육으로 리눅스상의 네트워크 TCP/IP 보안 및 아파치 및 삼바서버 구축 및 실습 수업으로 현업에서의 요구를 반영하여 바로 실무에 투입될 수 있는 역량을 배양하는 과정입니다.
교육쿼리큘럼
Trouble Shooting
ㆍ 기초 시스템 복구
ㆍ 자주 발생하는 문제들
ㆍ 복구 모드로 부팅하기. 단독 사용자 모드로 부팅하기
ㆍ 비상모드로 부팅하기

리눅스 설치(PXE 네트워크 설치)
ㆍ 네트워크 서버 설정 ,PXE 설정
ㆍ 킥스타트 파일 생성
ㆍ tftp 서버 설정 , DHCP, 설정, HTTP,FTP,NFS 설치

시스템 감시 작업
ㆍ 시스템 정보 모으기 ,프로세스.메모리 사용량
ㆍ 파일 시스템, 하드웨어

시스템 성능측정
ㆍ 성능 측정의 개요,측정의 명령어,성능 조정에 관한 기준 및 작업
ㆍ 시스템 튜닝 작업

장치 사용하기
ㆍ DAT 백업
ㆍ DAS (Direct Attched Storage) 사용
ㆍ SAN (Storage Area Network) 사용

보안개요
ㆍ 보안이란? / 보안제어 / 유요한 사이트

공격자와 취약점
ㆍ 간략한 해커역사, 네트워크 보안 위협
ㆍ 서버 보안 위협
ㆍ 워크스테이션과 가정요 pc 보안 위협

시스템 로그
ㆍ 시스템 로그와 syslog
ㆍ /etc/syslog.conf
ㆍ 로그 파일 분석
ㆍ 로그를 남기는 여러 프로그램

시스템 모니터링
ㆍ Red Hat Enterprise Linux 보안 설정하기

보안 업데이트
ㆍ 패키지 업데이트 하기

워크스테이션 보안
ㆍ 워크스테이션 보안 평가
ㆍ BIOS와 부트로더 보안
ㆍ 암호보안 / 관리제어
ㆍ 사용가능한 네트워크 서비스
ㆍ 개인 방화벽 / 보안 강화된 통신 도구

서버보안
ㆍ TCP래퍼와 xinetd를 사용한 서비스 보안강화
ㆍ portmap 보안 강화 , NIS 보안강화 , NFS 보안강화
ㆍ Apache HTTP 서버 보안 강화
ㆍ Sendmail 보안 강화 , 열려 있는 포트 확인하기

방화벽
ㆍ Netfilter 와 IPTables
ㆍ IPTables 사용법 , 일반 iptables 필터링
ㆍ FORWARD 와 NAT 규칙 , DMZ , 바이러스와 가짜 IP 주소

침입과 보안 사고 대응

침입 탐지
ㆍ 침입 탐지 시스템 , 호스트 기반 IDS,네트워크기반 IDS

사고 대응
ㆍ 사고대응 계획 ,실행,사고 조사
ㆍ 자원복구,사고 보고하기


CCNA
강의와 실습을 통해 교육생들은 Small to Medium - sized Businesses의Cisco Solution을 위한 정보들을 충분히 접하게 되며 라우팅에 사용되는 가장 일반적인 LAN, WAN Interface를 사용하여 Multirouter, Multigroup Internetwork을 만드는 설정작업을 학습 합니다.
교육쿼리큘럼
ㆍ기초 네트워크 과정 케이블 및 커넥터 특징]
ㆍ [OSI 7 Layer와 TCP/IP DoD Model 비교 및 기능 설명]
ㆍ [IP 주소 구조 및 서브넷팅 방법] ㆍ [VLSM 환경 및 CIDR IP 할당정책]
ㆍ [TCP 와 UDP 프로토콜에 대한 이해 및 패킷 분석]
ㆍ [패킷 분석기 사용방법 및 활용 방안]
ㆍ [네트워크 관리도구 사용법 및 기능]
ㆍ [라우팅 환경 디자인 및 IP 할당방법]
ㆍ [ 라우터 구조 및 연결방법 &기초 명령어]
ㆍ [정적 라우터 구성 및 동적 라우팅 프로토콜 설명]
ㆍ [동적 라우팅 프로토콜 RIP에 대한 이해 및 실습구성]
ㆍ [동적 라우팅 프로토콜 IGRP에 대한 이해 및 실습구성]
ㆍ [동적 라우팅 프로토콜 OSPF &EIGRP에 대한 이해 및 실습]
ㆍ [Access-list를 이용한 라우터 보안설정 및 실습]
ㆍ [Layer2 Switching 기능/문제점 파악/기본 스위치 명령어]
ㆍ [Cisco 2950 스위치 구성실습]
ㆍ [스위칭 환경에서의 VLAN &Routing 이해 및 실습]
ㆍ [WAN 기초 &기본 연결 및 서비스 이해]
ㆍ [ISDN 서비스 이해 및 구성 실습]
ㆍ [Frame Relay망 이해 및 구성]


Solaris Administrator 1
본 과정은 수강생들에게 소프트웨어 설치, 파일 시스템 관리, 시스템 부트 프로시저 수행, 사용자 및 보안 관리 수행, 네트워크 프린터 및 시스템 프로세스 관리와 시스템 백업 및 복구 수행과 같은 Solaris 9/10 환경에서 필수적인 시스템 관리 업무들을 수행하는데 필수적인 지식 및 기술을 제공합니다.
교육쿼리큘럼
ㆍ 파일 시스템 관리
ㆍ 소프트웨어 설치
ㆍ 시스템 부트 프로시저 수행
ㆍ 사용자 및 보안 관리 수행
ㆍ 네트워크 프린터 및 프로세스 관리
ㆍ 시스템 백업 및 복구 수행
ㆍ 링크 설명 및 사용
ㆍ 로컬 디스크 디바이스 관리, 리스팅 및 포매팅
ㆍ 다른 유형의 파일 시스템 마운팅 및 마운팅 해제
ㆍ 패키지 및 패치 관리 수행
ㆍ PROM(Programmable Read-Only Memory)명령어 사용
ㆍ NVRAM(Non-Volatile Random Access Memory) 파라미터 변경


Solaris Administrator 2
본 과정은 수강생들에게 네트워크 기본 기능 수행, 가상 파일 시스템 및 코어 덤프 관리, 스토리지 볼륨 관리, 액세스 제어 및 시스템 메시징 구성, 네이밍 서비스 설정과 설치 프로시저 수행 등을 위해 필수적인 지식 및 기술을 제공합니다.
교육쿼리큘럼
ㆍ 네트워크 기본 원리 설명
ㆍ Solaris Management Console을 통한 원격 관리 설명
ㆍ 가상 파일 시스템 및 코어덤프 관리
ㆍ 스토리지 볼륨 관리
ㆍ 액세스 제어 및 시스템 메시징 구성
ㆍ RBAC(Role Based Access Control) 구성
ㆍ 네이밍 서비스 설정
ㆍ 고급 설치 프로시저 수행
ㆍ JumpStart 구성
ㆍ 플래시 설치 수행

Solaris SCNA
본 과정에서는 LAN의 구성 및 문제 해결 같은 네트워크 관리 작업을 수행하기 위해 필요한 지식 및 기술을 제공합니다. 또한, IP(Internet Protocol) 라우팅, DNS(Domain Name Service), DHCP(Dynamic Host Configuration Protocol) 및 IPv6(IP version 6) 같은 주제에 대한 실습 과정을 진행하며, 운영체제 환경에서 성능 최적화 개념과 모니터링 툴에 대한 소개를 하고, sar, vmstat, iostat, netstat, nfsstat 등과 같은 성능 측정 툴의 사용법에 대해 다루게 됩니다. CPU, 메모리, I/O 병목현상(bottlenecks)등을 설명하고, 이에 대한 해결 방법을 제시하며, 가상 파일 시스템 성능에 대해서도 다룹니다. 또한 본 과정은 수강생들이 Solaris 운영체제와 관련된 성능 이슈를 분석하도록 하는 실습을 한다.
교육쿼리큘럼
ㆍ 네트워크 모델(TCP/IP 네트워킹)
ㆍ LAN(Local Area Network) 소개
ㆍ Ethernet Interface, ARP와 RARP, 인터넷 Layer
ㆍ 라우팅, Transport Layer(TCP와 UDP)
ㆍ 클라이언트-서버 모델, DHCP, 네트워크 Management Tools
ㆍ 도메인 네임 서비스(DNS), 전자메일, 메일 alias, 메일 서버
ㆍ sendmail, LAN Planning, 네트워크 문제 해결


C Language
C언어를 처음 접하시는 분들부터 중급 정도의 프로그래밍 수준까지의 분들을 교육 대상으로 하였으며, C언어를 처음 접할 뿐이지 다른 언어를 공부한 적이 있는 경우라면 더욱 효과 적 일 수 있는 강좌가 되도록 구성하였습니다. [학교수업을 보충하기 위한 경우라면 입문과정 필수과목]
교육쿼리큘럼
ㆍ C언어 소개, 역사, 구성요서 및 형식, 컴파일러, 프로그램 실습
ㆍ 계산식 출력 및 상수와 변수
ㆍ 자료형과 형변환
ㆍ 연산자 - 단항, 산술, 쉬프트, 관계, 논리, 삼항 대입
ㆍ 입출력 함수 및 제어문
for, if, switch case, while, break, do while
배열 - 1차원, 2차원, 3차원 배열
포인터, 함수
선처리부와 기억류
- 매크로, 외부파일 포함, 조건부 컴파일
- auto, 지역변수, 전역변수, static, extern변수
ㆍ 구조체
- 구조체 주소변수, 배열, 다중구조체, 자기 참조 구조체
ㆍ 클래스
- 맴버 변수, 멥버함수, 오버로드, 인라인, Const 멤버함수
ㆍ 생성자, 복사, 생성자, 소멸자
ㆍ 오브젝트 배열, const 오브젝트, this 포인터, static 함수/변수ㆍ 상속
- 상속방식, 오버라이드
ㆍ 다형성-
- 강상, 순수 가상 함수
ㆍ 파일입출력
- 텍스트 파일, 이진파일
ㆍ Wind32 어플리케이션
- 개요, WinMain()함수
- 윈도우, 프로시저, 헝가리안 표기법
ㆍ 사건 지향 프로그래밍, 그래픽, 이벤트 처리
ㆍ 대화 상자 이용, 소켓 API함수
- 소켓을 이용한 서버와 클라이언트 프로그램


Network Hacking
TCP/IP 취약점 분석 및 네트워크 해킹 및 보안에 관하여 학습합니다.본 과정은 IT 영역에서 접할 있는 UNIX, Linux, NT, Cisco Network의 보안을 두루 접할 수 있도록 구성되었으며, 보안에 대한 분야별 지식을 단기간에 습득하실 수 있습니다. 또한 현업에서 발생할 수 있는 여러 분야의 상황을 직접 경험해볼 수 있도록 교육 내용에 필요한 모든 장비 설치로(UNIX, NT, CISCO 장비로 구성) 각 영역별 실습을 통하여 과정 이해도를 높일 수 있습니다.
교육쿼리큘럼
ㆍTCP/IP &Network Routing
ㆍ The TCP/IP &OSI Network Models
ㆍ Operating Cisco Routers
ㆍ Static Route Cencepts and Configuration
ㆍ Intruduction to Dynamic Routing Protocols
ㆍ RIP v1 and v2 Dynamic Router Configuration
ㆍ OSPF &EIGRP Concepts and Configuration
ㆍ Firewall 개념ㆍ 방화벽 구조에 따른 분류
ㆍ 방화벽 설치 및 구성방법
ㆍ Secure Policy 구성요구 설정
ㆍ 방화벽 활용을 위한 서버 설정
ㆍ DNS/ DHCP/FTP/Telnet/ 서비스 구성과 실습
ㆍ Spam Mail 및 Virus 필터링 구성 및 실습
ㆍ 네트워크 보안상 문제점 파악 및 트래픽 분석
ㆍ Network 공격 유형 파악
ㆍ Analyzer를 이용한 Network Traffic 분석
ㆍ 기존 네트워크의 문제점 파악 및 대처를 위한 네트워크 구성
ㆍ 방화벽 구성을 위한 Unix 설치
ㆍ 방화벽을 위한 네트워크 환경설정
ㆍ L4 스위치를 사용한 로드 밸런싱 사용예
ㆍ 라우터 백업 구성 전략 및 설정방법
ㆍ 보안을 위한 라우터 구성 및 설정
ㆍ 보안지원
ㆍ IDS 개념 및 Firewall 연동 방법
ㆍ ESM 개념 및 Firewall 연동 방법
ㆍ Cache Server 개념 및 구성 방법 및 장/단점 설명
728x90
728x90

 JetBrains사의 IntelliJ IDEA 버젼6부터 Groovy와 Ruby를 지원하기 시작했다.(Groovy도 Ruby와 비슷한 스크립트언어다.)
그런데 IntelliJ IDEA가 뭔지 처음 들어봤다. 이녀석 찾아봐도 국내엔 설명이 없고 위키백과 영어버젼에만 나와있다. 대략 상용화된 JAVA IDE라고 한다. 그러니까 자바로 만든 리펙토링 툴인데 프로그래머가 빠르고 쉽게 자신의 코드를 redesign하도록 도와준다고 한다. C#을 사용하면서 비슷한 툴을 몇번 본 적이 있다. 같은 내용이면 method로 빼내주고 scop를 알아보기 쉽게 표시해주고 그런 녀석인가보다. 2001년에 개발되어 빠른 속도로 퍼지고 있다고 한다. 벌써 버젼6까지 나온 것을 보면 꽤 장사가 잘되나 보다.
이 툴의 성공비결은 다른 공개 개발툴과의 호환성이 좋다는 것인데 CVS, Subversion, Apache Ant ,JUnit등을 지원해준다고 한다. Groovy와 Ruby까지 지원해주니 꽤 유용한 녀석인 것 같다. 하지만 라이센스를 얻기 위해서는 미화 500$정도가 든단다.

728x90
728x90

http://www.webdesignerwall.com/tutorials/advanced-css-menu/
CSS-Techniques

1. Triadic Background Setting with CSS
The Silverback web site uses three background images to create the illusion of 3D with simple CSS. No documentation is provided, however the source code is quite intuitive. [via Wilson Miner]

CSS-Technique

2. Creative Use of PNG Transparency in Web Design
With proper PNG support in Internet Explorer 7, and some handy JavaScript and CSS tricks to account for older browsers, we can use PNG images to greatly enhance our design vocabulary.

CSS-Technique

3. CSS Server-Side Pre-Processor

CSS-Technique

4. Advanced CSS Menu

CSS-techniques - Advanced CSS Menu

5. CSS SiteMap

CSS-techniques - beTech » CSS SiteMap » Oct 3, 2007

6. Styling File Inputs with CSS and the DOM
File inputs (<input type=”file” />) are the bane of beautiful form design. No rendering engine provides the granular control over their presentation designers desire. This simple, three-part progressive enhancement provides the markup, CSS, and JavaScript to address the long-standing irritation.

CSS-Technique

7. A Savvy Approach to Copyright Messaging
Derek Powazek suggests adding a copyright message to a photo and use CSS to crop its view. This is supposed to accomplish the goal of adding robust copyright information without defacing your own work.

Screenshot

8. Particletree Category List

CSS-techniques - Particletree » Automatically Version Your CSS and JavaScript Files

9. Advanced CSS Menu Trick
What we want to do here, is instead of simply altering the state of the navigation item the user is currently rolling over, we want to alter the non navigation items as well.

Screenshot

10. CSS hover effect

CSS-techniques - CSS hover effect | Veerle's blog

11. Creating a table with dynamically highlighted columns like Crazy Egg’s pricing table

CSS-techniques - Creating a table with dynamically highlighted columns like Crazy Egg's pricing table

12. A Stripe of List Style Inspiration
A different type of list and navbar styling. As stripes.

CSS List Style

13. Rediscovering the Button Element

CSS-techniques - Particletree » Rediscovering the Button Element

14. Dynamic CSS With Variables
Geoffrey Grosenbach describes how you can integrate CSS variables in CSS coding — with Ruby on Rails.

Dynamic CSS

15. Hyperlink Cues with Favicons
I wanted to extend the concept of hyperlink cues a little. For links that point to external sites, what if, instead of showing a generic ‘external link’ icon, we showed that site’s favicon?

CSS-techniques - Drop Shadow CSS

16. A CSS styled table version 2

CSS-techniques - A CSS styled table version 2 | Veerle's blog

17. CSS Step Menu
A method of designing the so-called step-menus, which have some steps users have to go through in order to achieve some aim. This menu offers a varying amount of steps, dependent upon the type of user accessing the application.

Stepmenu

18. Creating bulletproof graphic link buttons with CSS | 456 Berea Street

CSS-techniques - Creating bulletproof graphic link buttons with CSS | 456 Berea Street

19. Iconize Textlinks with CSS
Links are fun, but sometimes we don’t know where they take us. With this little CSS technique a user can identify a link by its icon. The updated release of the technique.

Screenshot

20. Better Ordered Lists (Using Simple PHP and CSS)
Ordered lists are boring! Sure you can apply background images and do quite a bit of sprucing up to a regular ordered list, but you just don’t get enough control over the number itself.

Screenshot

21. Circular Menu with CSS
This article shows how a beautiful circular navigation menu is created. In Spanish with Source code and an example.

Circular Menu with CSS

22. CSS Dock Menu

CSS-techniques - CSS Dock Menu

23. Digg-like navigation bar using CSS
This tutorial explains how to design a digg-like navigation bar using a liquid design with rounded corners for links.

Screenshot

24. 13 Awesome Javascript CSS Menus
13 “fresh” JavaScript+CSS-based navigation menus in a brief overview. Among other things Slashdot Menu and Sexy Sliding Menu displayed below.

CSS Menu

25. CSS Pricing Matrix
A CSS-based matrix in which clicking on a highlights the associated cell in the top row and left column giving an indication of relationships among the provided information. Similar solution: Tablecloth.

CSS Pricing Matrix

26. CSS List Expander
So, we have an unordered list that can go on in depth as much as we want. The script analyzes the list tree and applies toggle functions for expanding/collapsing child objects.

List Expander

27. How to create VISTA style toolbar with CSS
Reproducing Vista toolbar, with buttons and hover effect in cross-browser compatible CSS and (X)HTML.

Vista CSS Toolbar

28. Fade Out Bottom
This is a demonstration of the effect where the bottom of the page seems to fade out. The technique makes use of an fixed position div (bottom: 0%) with a transparent PNG image and a high z-index value.

CSS-techniques - Fade Out Bottom

29. Scrollovers - A New Way of Linking
Everyone is familiar with hover-effects. This CSS+JavaScript-based techniques creates the Scrolleffect - not really necessary, but it’s nice to know, how it can be done.

Scrollovers

30. How to Style an A to Z Index with CSS

CSS-techniques - How to Style an A to Z Index with CSS | Smiley Cat Web Design

31. CSS List Boxes
Using a simple unordered list this experiment aligns the boxes across the page with the end result being to showcase items like services, products, or specials. One of cool thing about this — if you turn off styles — is the extractable semantics with the headings and paragraphs used.

List Boxes

32. How-to create a “Table of Contents” Navigation
In as little as 8 lines of HTML, and 5 lines of CSS, the Table Of Contents Navigation block can be integrated in your site ready for even more styling.

Table of Contents

33. CSS Recipe for Success

CSS-techniques - CSS - A Recipe for Success

34. Partial Opacity

CSS-techniques - Stu Nicholls | CSSplay | Partial Opacity

35. Simple Round CSS Links (Wii Buttons)

CSS-techniques - Simple Round CSS Links ( Wii Buttons )

36. How to make sexy buttons with CSS

CSS-techniques - How to make sexy buttons with CSS

37. CSS Pull Quotes

CSS-techniques - CSS Pull Quotes | Design Meme

38. Drop Shadow CSS

CSS-techniques - Drop Shadow CSS

39. CSS Speech Bubbles
Easy to customize speech bubbles coded in CSS and valid XHTML 1.0 strict.Tested in all major browsers.

Screenshot

40. CSS Double Lists

CSS-techniques - CSS: Double Lists | Mike’s Experiments | MikeCherim.com

41. Perspective Text with CSS

CSS-techniques - Mike’s Experiments: Archives Page | A Record of My Madness | Powered by the GreenBeast CMS RSS Newsmaker - -

42. Better Email Links: Featuring CSS Attribute Selectors
Learn how to generate code for displaying the e-mail automatically once mailto is used. CSS Attribute Selectors in action which is not supported by Internet Explorer 6 and 7.

Screenshot

43. CSS: Menu Descriptions
This is a CSS technique that could be useful if you want to give users accessible added content such as tool-tips, notifications, or alerts, without adding unnecessary clutter to your page. And since it doesn’t rely of JavaScript, it should be useful to everyone, even disabled users.

Screenshot

Further Techniques

44. CSS Transparency Settings for All Browsers

CSS-techniques - CSS Transparency Settings for All Browsers

45. Time Sensitive CSS Switcher
CSS Switching script that changes style sheet based on time of day.

46. Custom Reading Containers
This amazing little script allows the user to resize any container.

47. Eric Meyer’s CSS Reset

CSS-techniques - CSS Tools: Reset CSS

48. PNG Overlay
Create a transparent PNG overlay which can be used as a mask / frame around regular JPEG or GIF so users can upload photos without having to worry about using any graphics program to apply filters, plus it saves time.

49. Turning Lists into Trees

CSS-techniques - odyniec.net

50. Create Resizable Images With CSS

728x90
728x90
Ruby's Concurrency Nightmare
Ruby on Rails, like most other programming technologies, now finds itself caught in the concurrency quagmire. While RoR has a streamlined focus on the Web application domain, parallelism isn't as limited in terms of domain, platform or application—it's everywhere.

Read James Reinders' counter to this article.

It's interesting that James would extol the virtues of Ruby on Rails in a forum dedicated to discussing concurrency. Why? Ruby on Rails has done a magnificent job of wrangling the complexity of Web applications into a relatively simple model-view-controller concept, but Ruby enthusiasts know that the technology is embarrassingly nonfunctional when it comes to concurrency.

Describing Ruby's "somewhat cooperative" threading scheduler, the official Ruby wiki notes the language's limitations, most shockingly with regards to the 10ms timeout to guarantee atomicity and allow context switching. "On a high-end system, a 10ms timeslice can be an extremely long time; when running a thousand threads, as might be common in a large massively-concurrent application, it would take at least ten seconds for all threads to get a timeslice. Because of the issues associated with this 10ms timeslice and those associated with green threading in general, concurrency in Ruby is typically achieved by running or spawning additional Ruby processes."

Ruby also boasts some native-incompatible threading features such as the ability to kill threads from anywhere in the program, invoke infinite sleep states and enter critical sections at will.

Benjamin Gorlick has written an informative piece on the challenges of threading in Ruby and the hopes its aficionados have for concurrency support in the future. Rails, especially, "was not designed with multi-threading in mind. It was coded completely non-thread safe. There is no reentrancy in many code paths and there is no good locking on important data structures, especially during development mode. It appears rails core is assuming everyone is going to stuff their servers with as much RAM as possible. I recommend 8-16GB of RAM for applications over ten pages (That was a joke, sort of). The RAM solution works until you reach the point of running a huge installation. Assuming you are using mongrel to serve your rails applications, most developers are coming up with hacks to move logic out of rails so the mongrel processes will be lighter. This is done using basic message queues and partly helps this sort of operation. Small shared hosting applications and small projects really suffer from the rails lack of multi-threading implementation."

New tools are on the horizon, however. Gorlick writes about JRuby, a Java implementation of the Ruby programming language that uses Java threads (generally, native OS threads). "Since Java no longer uses green threads, JRuby is able to map one ruby thread to one OS thread," Gorlick explains. "This means it is truly concurrent and the JRuby team is working to make it more safely concurrent in all the core classes."

Another tool is the Rubinius virtual machine for the Ruby programming language. Loosely based on the Smalltalk-80 architecture, Rubinius is written in C and has several concurrency primitives such as Channels, Actors, Tasks and Threads. "Rubinius is able to create and manage 1000 threads instantly with no noticeable overhead. Java and Rubinius allow threads to run concurrently (i.e., access the heap concurrently) and since Rubinius implements the same way Java does so it should have performance much like JRuby, although there are still potential bugs and missing features," according to Gorlick.

New Analogies: Experts Needed
I realize that James was merely admiring the elegant focus of Ruby, not its aptitude for concurrency. But I find it supremely interesting that Ruby on Rails, like most other programming technologies, now finds itself caught in the concurrency quagmire.

Furthermore, RoR is adapted to an MVC convention because the Web application domain doesn't need too many additional models. Parallelism isn't as limited in terms of domain, platform or application—it's everywhere.

James's questions bear repeating: Following Ruby's "Convention over Configuration" mantra, what should be the conventions of parallelism be? Certainly, OpenMP and Threading Building Blocks have gone a long way toward standardizing threading code via libraries of common parallel methods. So, are we already achieving CoC, or could there be additional ways to define standard threading and implicit parallelism while forcing developers to specify only their unconventional programming decisions?

With regards to the other Ruby tenet, "Don't repeat yourself," again one could argue that contributions to parallelism libraries are a way to reduce unnecessary labor. But in the context of Ruby, that also means that information is not sprinkled around in hard-to-trace regions of code, but kept in unambiguous repositories. Is there an analogy for concurrency?

Regardless, parallelism solutions can learn from RoR's domain-specific nature—even if RoR needs a push to enter the age of concurrency.

출처: http://www.devx.com/go-parallel/Article/36235?trk=IntelGo%5FCplusSpecial
================================================================================
루비의 당면 과제에 대해 말하고 있는 듯 보인다.
여기서는 동시성에 대해 언급하고 있는데 Ruby on Rails(ROR)에서 thread를 생성하고 실행할 때 10ms(0.1초)정도 소요된단다. 앞서 루비를 소개할 때 스크립트 언어가 느리다고 했는데 thread는 더 느린가보다. (thread가 수백개정도 생성되는 경우가 web application에서는 흔한 일이니까 치명적일 수도 있다.)

Ruby는 몇몇 native-incompatible threading features를 자랑한단다. 이걸 뭐라고 설명해야 할까? thread를 다룰 때 thread의 상태에 상관없이 해당 쓰레드를 kill할 수 있는 능력이 있단다.(이거 thread를 다룰 때 괘 골치아픈 문제다.)

Benjamin Gorlick란 유명한 사람이 앞으로 Ruby는 동시성에 대한 지원이 있어야 한다고 말했단다. 그사람 말에 따르면 Ruby는 multi-threading을 염두하지 않고 만들어졌다. (쓰레드가 없는 것이 안전하단다.)
많은 code에서 재진입을 허용하지 않고 있으며 그것은 중요한 자료구조들을 보호하는 것에 (특히 개발하는 도중엔 더욱) 좋지 않다. Ruby는 서버컴퓨터에서 RAM의 용량이 충분하다고 생각하고 만들어졌다.(RAM이 부족한 상황을 준비하지 않았다는 말. 10page 이상의 프로그램을 위해 8~16G RAM을 권장한다고 그래놓고 농담이란다.ㅡㅡ;)
이 문제를 해결하기 위해 mongrel를 사용하는 경우가 있다고 하는데 mongrel은 사전에 잡종개라고 되어 있다. 아마 다른 언어를 혼용해서 사용하는 것 같다. 기본적으로 ROR을 사용하지만 thread와 관련된 부분은 다른 것을 사용한다는 것 같다.(내가 알기로는 JRuby를 사용해서 thread는 자바의 thread를 쓰기도 한다.) 이런 mongrel processes는 좀더 가볍단다. 소규모 호스팅 applications와 소규모 프로젝트들은 루비의 멀티쓰레딩때문에 생기는 랙(lack)때문에 고생이 많단다.

JRuby를 쓴 Gorlick가 말하길 새로운 tool들이 떠오르고 있단다. 바로 위에서 내가 말한 내용이다. JRuby에서 Ruby언어를 사용하면서 thread는 JAVA의 thread를 쓴다. 자바가 더이상 green thread를 사용하지 않기 때문에 Ruby의 thread하나당 OS thread하나로 매핑시킬 수 있단다.


다른 tool은 Rubinius virtual machine이다. 루비전용 가상머신 정도 되겠다. Rubinius는 Smalltalk-80 architecture에 기반을 두고 만들어졌기 때문에 C로 만들어졌다. 그리고 몇몇 동시성에 대한 원형을 가지고 있는데 Channels, Actors, Tasks and Threads가 그 예다. Rubinius는 눈에띄는 오버헤드없이 1000개의 thread를 생성하고 관리할 수 있다. JAVA와 Rubinius는 thread가 동시성을 가지도록 해준다.(heap에 동시에 접근할 수 있다는 말이다.) Rubinius는 JRuby만큼의 효율을 보여주지만 여전히 가능한 버그들(potential bugs)을 가지고 있고 특징이 없다(missing features)고 Gorlick이 말했다.
728x90

+ Recent posts