The Composable Architecture
The Composable Architecture(TCA)는 일관되고 이해할 수 있는 방식으로 어플리케이션을 만들기 위해 탄생한 라이브러리입니다. 합성(Composition), 테스팅(Testing) 그리고 인체 공학(Ergonomics)을 염두에 둔 TCA는 SwiftUI, UIKit을 지원하며 모든 애플 플랫폼(iOS, macOS, tvOS, watchOS)에서 사용 가능합니다.
type MaterialType = "examPaper" | "textbook"; | |
type MaterialSubType = "previous" | "orzoOriginal" | "private"; | |
interface Material { | |
type: MaterialType; // 컨텐츠 대분류 | |
subType: MaterialSubType; // 컨텐츠 중분류 | |
title: string; // 학습자료 제목 | |
thumbnailURL: string; // 썸네일 이미지 URL | |
description: string | null; // 학습자료 한 줄 설명 | |
authority: Authority; // 권한 (무료, 프리미엄) |
import SwiftUI | |
enum SideMenu: String, CaseIterable { | |
case first | |
case second | |
case third | |
case fourth | |
case fifth | |
var id: String { "\(self)" } |
import SwiftUI | |
enum SideMenu: String, CaseIterable { | |
case first | |
case second | |
case third | |
case fourth | |
case fifth | |
var id: String { "\(self)" } |
The Composable Architecture(TCA)는 일관되고 이해할 수 있는 방식으로 어플리케이션을 만들기 위해 탄생한 라이브러리입니다. 합성(Composition), 테스팅(Testing) 그리고 인체 공학(Ergonomics)을 염두에 둔 TCA는 SwiftUI, UIKit을 지원하며 모든 애플 플랫폼(iOS, macOS, tvOS, watchOS)에서 사용 가능합니다.
name: PROJECT_NAME | |
options: | |
minimumXcodeGenVersion: 2.18.0 | |
createIntermediateGroups: true | |
developmentLanguage: en | |
usesTabs: true | |
indentWidth: 4 | |
tabWidth: 4 | |
xcodeVersion: 12.0 | |
deploymentTarget: |
$ brew install python3
{ | |
"profiles": [ | |
{ | |
"name": "Default profile", | |
"selected": true, | |
"simple_modifications": { | |
"left_command": "left_option", | |
"left_option": "left_command", | |
"right_option": "right_command", | |
"application": "right_option" |
- (BOOL)openLink:(NSString *)link withDelay:(int64_t)delay animated:(BOOL)animated sticky:(BOOL)sticky { | |
// 일반 URL | |
if([link hasPrefix:@"http://"] || [link hasPrefix:@"https://"]) { | |
ACWebViewController *controller = [[ACWebViewController alloc] initWithUrl:link]; | |
[self showViewController:controller withDelay:delay modal:YES animated:animated]; | |
return YES; | |
} | |
NSArray *components = [link componentsSeparatedByCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@":/"]]; | |
if (IS_BLANK_ARRAY(components)) |
if(scrollView.tag == 200) { | |
int page = floor(scrollView.contentOffset.x / kSlideImageWidth); | |
float hRatio = (scrollView.contentOffset.x - kSlideImageWidth * page) / kSlideImageWidth; | |
if(page == [placeImageList count]-1) return; | |
NSDictionary *currentImageInfo = [placeImageList objectAtIndex:page]; | |
NSDictionary *nextImageInfo = [placeImageList objectAtIndex:page+1]; | |
float currentHeight = [[currentImageInfo objectForKey:@"height"] floatValue] / [[currentImageInfo objectForKey:@"width"] floatValue] * kSlideImageWidth; |
import requests | |
from bs4 import BeautifulSoup | |
r = requests.get('http://www.ddp.or.kr/EP010001/getInitPage.do') | |
soup = BeautifulSoup(r.text) | |
exhibit_list = soup.find_all(class_='gallery_list')[0].find_all('li') | |
for ex in exhibit_list: | |
print ex |